专栏中心

EEPW首页 > 专栏 > 树莓派spi通信-基于wiring库

树莓派spi通信-基于wiring库

发布人:电子禅石 时间:2019-11-26 来源:工程师 发布文章

一: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 <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <wiringPiSPI.h>
//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 
版权声明:本文为博主原创文章,转载请附上博文链接!


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

UCD9240 GUI 器件配置

视频 2009-03-24

NI 热电偶温度测量

NI LabVIEW 温度采集、分析与记录

视频 2009-03-25

USB 总线转接芯片CH341 中文手册第1卷-中文手册

verilog教程(书)

芯科科技FG23L无线SoC全面供货,以高性价比拓展Sub-GHz物联网市场

OpenAI与博通合作设计自己的AI芯片

智能计算 2025-10-15

义合控股完成认购人工智能算力公司 迈向AI及高性能运算新领域

Power Integrations发布新技术白皮书,深度解读适用于下一代800VDC AI 数据中心的1250V和1700V PowiGaN技术

台积电2025年最大客户换人做? 苹果退守第二、NVIDIA有望夺冠

EDA/PCB 2025-10-15

瑞萨电子采用下一代功率半导体 为800伏直流AI数据中心架构供电

通用汽车将遭受 16 亿美元的打击,因为电动汽车的税收优惠被削减和排放规则放宽

用于改进设计验证的断言 IP (AIP)

EDA/PCB 2025-10-15

隔离型开关电源:选择正激式转换器还是反激式转换器

怎样使用时钟驱动高速 ADC

USB 总线转接芯片CH341 中文手册第2卷-并口及同步串口说明

设计中使用 TI 的UCD9081 图形用户界面 (GUI) - 中文

USB大全(书)

资源下载 2007-03-20

博通退出UALink董事会后加入OCP的ESUN计划

智能计算 2025-10-15
更多 培训课堂
更多 焦点
更多 视频

技术专区