当前位置: 首页 > 工具软件 > Wiring > 使用案例 >

spi wiringpi 树莓派_树莓派spi通信-基于wiring库

戴鸿羽
2023-12-01

一:spi通信的主要函数

1,int wiringPiSPI(int channel,int speed); 选择一个spi通道(通道0和通道1)进行初始化,设置spi的传输速度(5*1000*100-32*1000*1000),执行失败返回-1

2,int wiringPiSPIDataRW(int channel,unsigned char *data,int len);

该函数执行一个同时读写的操作,通过选定的SPI总线。在data中的数据发送出去的时候,data中同时接收从总线中接收到的数据。

3,int wiringPiSPISetupMode(int channel,int speed,int mode);  //增加了可以设置SPI的通信模式

给定一个spi总线,将缓冲区的数据写到

二:实验现象

本实验主要是将spi的MISO和MOSI通过短接线短接起来检测数据是否传输正常:

当将数据线短接时:有数据产生,反之没有数据。

二:实验步骤

1,sudo raspi-config弹出系统配置对话框,使能spi,重新启动树莓派,内核加载成功

2,编写测试程序

(1),初始化wiringPI库;wiringPISetup函数

(2),初始化SPI总线;wiringPiSPiSetup函数

(3),从总线中读写数据;wiringPiSPIDataRW函数

spi2.c

#include

#include

#include

#include

//spi使用前的准备 返回spi的文件描述符

int initSPI()

{

int spiFd; //spi的文件描述符

//初始化所用到的IO引脚

//初始化SPI通道0,并设置为最大速度32000000

spiFd=wiringPiSPISetup(0,500000);

if(spiFd==-1)

{

printf("init spi failed!\n");

}

}

int main()

{

char Data[10]={1,2,3,4,5,6,7,8,9,10};   //定义读写的数据,在该数据被写入的时候,同时也从总线中读出数据

int i=0;

//初始化wiringPI的库函数

if(wiringPiSetup()<0)

{

printf("init wiringPi error\n");

}

initSPI();  //spi的初始化

while(1)

{

wiringPiSPIDataRW(0,Data,7);  //向总线中写入&个数据

printf("read spi data is:\n");  //读出总线的数据

//打印读出的数据,如果将MISO和MOSI短接:打印出 0 1 2 3 4 5 6 7 8 9 10   其中后三个是数组的本身内容 接收到了数据

//如果将MISO和MOSI断开:打印出                0 0 0 0 0 0 0 0 8 9 10   没有接收到数据

for(i=0;i<10;i++)

{

printf("%d\n",Data[i]);

}

printf("\n");

delay(1000);

}

return 0;

}

编译:gcc  spi2.c -lwiringPi -o test

实验现象

spi的MISO和MOSI短接

spi的MISO和MOSI断开

博文索引  持续更新中。。。

---------------------

作者:qq_32481879

来源:CSDN

原文:https://blog.csdn.net/qq_32481879/article/details/78546851

版权声明:本文为博主原创文章,转载请附上博文链接!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

 类似资料: