数据传输分析:
查看手册,如图数据定义:这里可以看出数据每4位一组,一共24位数据,其中最高4位为符号位
波形:sclk【上升沿】数据有效
官方给的手册较简陋,如下图为实际抓起波形:
其中上面一栏为SCLK时钟,下面一栏为SDA数据
与手册中数据格式一致,一共24位数据
方法一:外部中断计时
可使用外部中断识别时钟上升沿,然后将其数据SDA的电平读取保存,在处理错误数据的时候做一个超时就行。
该方法效率低,主频不能太低,
方法二:SPI从机读取
仔细观察波形,可看出是4位SPI波形,实际上可以用8位spi读取数据,同样在处理错误数据的时候做一个超时就行。可以用DMA+SPI或者SPI中断去读取DR寄存器。
spi配置的话需要注意相位和极性,这里数据格式表明是LSB先发,这个也需要注意一下!
方法三:定时器IC捕获
之前用STM32 hal库一直被误解,dma其实可以搬运IO口数据(这个要看IO是否挂载在总线上,G0B1不能搬运),实现时只需要重新配置搬运的源地址,建议用LL库。
和外部中断差不多,只是触发改为定时器上升沿触发DMA搬运IO口数据(SDA),使用方法一的解析程序即可。
其他方法
不介绍阻塞类,效率太低,
总结
以上方法均已实践,按照实际需求选取相应的方式,