通过不断的研究验证, labview和C#都已成功读取到ads1256反馈的电压值, 期间概率性反馈值不对,也解决了(数据换算方面).
但始终有个奇怪的疑问, SPI4读取ads1256的3个字节电压数据(24bitADC), 收到的确不是3个字节, 在它前面会多出2个未知数据.
如图所示, 真正有用的是有效数据是2-4位,但不影响应用.
通过不断的研究验证, labview和C#都已成功读取到ads1256反馈的电压值, 期间概率性反馈值不对,也解决了(数据换算方面).
但始终有个奇怪的疑问, SPI4读取ads1256的3个字节电压数据(24bitADC), 收到的确不是3个字节, 在它前面会多出2个未知数据.
如图所示, 真正有用的是有效数据是2-4位,但不影响应用.
您好,请问您调用的API函数,数据长度指定是多少?返回读取长度是不应该超过指定的iLength数据长度的。
CH341StreamSPI4 函数说明
iLength:需要xfer传输的字节长度
ioBuffer:需要xfer传输的缓冲区,由于SPI是exchange交换传输,因此该缓冲区内容会先经过MOSI信号线对外输出,然后该API成功返回后,其内容是从MISO信号线上采集的数据。
也看参考下该博客看下:https://blog.csdn.net/WCH_TechGroup/article/details/130928825
该博客先前参考过.
CH341StreamSPI4? 以下参数都试过
实验A: iLength= 3 时,? 读取的ioBuffer数据会不完整( 2个未知+1个ADC)? ---缺失ADC后两个字节.
实验B:?iLength= 5 ,? 读取的数据刚好到有效数据的末尾(2个未知+3个ADC字节)
实验C:?iLength= 8 ,? 读取的数据(2个未知+3个ADC+1个未知+2个FF)?
实验A:?ioBuffer大小=3个字节数组时 ,? 数组[0]=0x01(读取ADC指令, 长度=1)-- 读取的数据=1个未知
实验B:?ioBuffer = byte[5]? ?,? [0]=0x01(读取ADC指令, 长度=1)-- 读取的数据=2个未知+3个ADC
实验C:?ioBuffer = byte[8]? ?,? [0]=0x01(读取ADC指令, 长度=1) --(2个未知+3个ADC+1个未知+2个FF)?
您好,看起来这个和ads模块硬件特性有关,应用程序读到的数据是真实模块返回的数据。你也可以用示波器或逻辑分析仪查看SPI数据。