SPI认识

SPI分为好几种模式

不同模式下   读取数据时  SCK线的状态不一样

STM32硬件SPI   有16BIT  8BIT的两种模式 

既  收发都是8或16bit

SPI缺少响应反馈机制  无法知道  是否收到数据

STM32的SPI还与I2S共用引脚

在子函数中  给某个变量定义了   volatile 关键字

则这个变量的默认值  为一个很大的数   并不是0   ( 你没有初始化的话)

估计如果初始化了后  应该是个正常的数

上午的时候因为  IIC断线后读不出数据   

我猜测   直接  IIC的SCK和SDA还连接了两个普通的IO  

那个时候    SDA被拉低   当程序运行到  WAIT ACK时  可以被拉低   模拟了一个ACK  所以断线之前能够得到响应

断线后   再加上我把传感器的供电换为3.3V所以不再有这样的现象  之后都一直是NOACK

下午:

尝试SPI后读取的数据还是不对

我就尝试用模拟SPI但是那个程序还是不好用   可以看看到底是什么问题

是不是因为   SPI的模式不一样不匹配

晚上  继续读  现在版本的程序

READ PROM  地址改为   0XA0+I*2     0XA0+I*2+1    

以这个数据为准  

不知道好不好

最后直接套用完整的计算公式

得到了数据   还挺稳定的

但是   明天测试一下他的  温度补偿怎么样  在不同温度下  测几组数据

做个试验

原文地址:https://www.cnblogs.com/qdrs/p/7674910.html