如图片及视频, 我使用51单片机模拟I2C协议和设备进行通讯, 读出来的数据缺少前几位, 只读到后几位的数据
MCU IO口和从设备之间用杜邦线连接
从设备的排针没有严丝合缝的完全接触, 留有一定缝隙
第一张图片里显示的14751(0x399F) 是我想要的数据, 而第二张, 第三张是我用手晃动排针后读出的数据
第二张没读到数据(数据为0)
第三张的数据是我期望值的后两位159(0x9F)
需要说明的是, 我用手将排针和从设备的触点用力按在一起, 确保物理接触的时候, 读出来的数据是159(0x9F)
只有排针和触点之间处于一个微妙的角度(介于不接触和接触之间)的时候读出来的数据才是14751(0x399F)
我自己也做过几个测试, 结果是我用力把排针和触点按在一起的时候, 单片机读不到0x399F的前两位, 只能读出后两位0x9F
只有当我轻微晃动排针的时候才有可能得到我想要的数据(要把握晃动的角度, 还得看运气)
我的疑问是:
1. 既然可以断定是排针接触不良导致的问题, 那么为什么当我按紧排针确保接触的时候不能得到我想要的数据呢?
2. 这是软件还是硬件的问题?
a. 如果是硬件的问题, 可以使用软件的方法规避吗?
b. 可以通过不使用排针, 把MCU和设备焊在PCB上来解决吗?
c. 如果是软件的问题, 问题大概出在哪里?
从设备的接口:
我使用的排针
视频:
示例.zip
(1.09 MB, 下载次数: 3)
恳请各位大佬解答, 感激不尽!!
|