初级会员

- 积分
- 108
- 金钱
- 108
- 注册时间
- 2015-11-30
- 在线时间
- 22 小时
|
50金钱
我在使用硬件SPI读取芯片数据时,一开始数据没有任何异常,但是过一天或者两天,从芯片中读到的数据出错。
我用示波器看了一下出错的SPI时序,时钟没有任何异常,MOSI引脚好像有问题,和正常的SPI有一些区别,大致是空闲电平从低电平变为高电平,因为示波器没有数字信号分析能力,我只能看到这么多。
我初步怀疑是中断问题,因为只有中断才会出现这样的特性。但是我从代码上分析,并没有任何时候被打断会出现不可恢复的错误。
下面是我的代码:
uint32_t ATT7022_SPI_RegRead(uint8_t reg)
{
uint8_t data[3];
HAL_SPI_Transmit(&hspi2, ®, 1, 100);
ATT7022_DELAY_US(3);
HAL_SPI_Receive(&hspi2, data, 3, 100);
return (uint32_t)(data[0]<<16)|(data[1]<<8)|(data[2]);
}
|
|