吧SPI口作为通用IO使用
用示波器看看这几个口有没有数据送出
如果是这几个接纤闹口坏了考虑换芯片吧
不过SPI那几个脚角单独坏的可能性很低
好好检查检查你的程序吧
ATF144x说的很精辟
首先NSS配置为硬件的话,相应引脚的GPIO应配置为第二功能;其次确认SPI外设的时钟和使能设置;
还有主从机的配置;做简
如果STM32是主机,当需要读取从机数据的时候,必纯虚裤须有主机发起,由主机来提供总线时钟。
如果要发数据,发出数据后返回值不关心,但还是要读取以清空寄存器;
如果要收数据,不关心发出什么数据,可以发0X00或0XFF;
还取决于从机的控制协议;
比如从机受到0X55后会返回2个字节数据;用下面的函数
LTD0=spi1_sr_byte(0x55) // 发送指令,不关心收什么
LTD1=spi1_sr_byte(0x00) //誉梁 接收数据,不关心发什么
LTD2=spi1_sr_byte(0x00) // 接收数据,不关心发什么
下面是个例程
unsigned char spi1_sr_byte(unsigned char ltd) // LTD是要发送的数据
{
unsigned char ltrd // 接收的数据
while(!SPI1_TXE) // 等待发送完毕
while(SPI1_BUSY) // 等待总线忙
SPI1->DR=(unsigned short)ltd// 发数
while(!SPI1_RXNE)// 等待接收完成
ltrd=SPI1->DR //收数 注意SPI总线的特点,每次发一个数才能收一个数。
return ltrd
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)