今天测试SPI读数据,整个数据长度为16字节,读取的数据头是0x55 0xAA 时钟极性为高电平,第二个边沿上升沿采集数据,数据位为8位,在进行16个字节读取时采用一次片选,循环16次读取16个字节发现读取的数据为0x55 0x5D,在示波器上查看时钟和数据对应关系,发现在第1个字节读取和第2个字节读取间隔时间,多了半个时钟周期,加上等待间隔的时间,正好多了一个时钟周期,设备认为是有效的时钟就把数据送出来了,导致主设备在读取第2个字节时候时钟和数据对应错位。应该在第8个时钟位置应该变成高电平,反而又进行了一次拉低操作,然后变高电平这个高电平是两个字节操作的间隔。 //这种操作数据就会出错 for(uint32_t i=0; i<16; i++) { HAL_SPI_Receive(&hspi2,&rx_data[i],1,5); } //这种操作数据就不会出错 HAL_SPI_Receive(&hspi2,rx_data,sizeof(rx_data),5); 有没有人遇到过类是的问题!!! |
示波å¨æåçæ¶éåæ°æ®å¯¹åºå ³ç³»
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
这两个完全不是一回事呀
________________________________________
//这种操作数据就会出错
for(uint32_t i=0; i<16; i++)
{
HAL_SPI_Receive(&hspi2,&rx_data,1,5);
}
//这种操作数据就不会出错
HAL_SPI_Receive(&hspi2,rx_data,sizeof(rx_data),5);
_________________________________________
第一种情况是多次片选,第二种是一次片选。
评分
查看全部评分
评分
查看全部评分