本帖最后由 wangxxll111 于 2014-4-2 14:48 编辑
我这是跟485扛上了!
先说一下我的设备通讯的流程,有点乱:
通讯有3部分:
1、arm板出来的 ttl电平,这个是 3.3v的;
2、TTL转485模块,自己做的,
3、mega8+485的通讯电路
工作流程是这样的: arm板上的ttl电平,通过 ttl转 485模块,转换成485信号后,与mega8+485通讯电路,进行通讯
实际测试中存在问题:从 arm板上的发送出来的数据 ,通过 ttl转 485模块 ,发送到mega8+485通讯电路,
mega8接收正常,mega8接收到数据后 ,处理后,返回一组数据,再次通过 ttl转 485模块 ,送给arm板,arm板接收到的数据出现异常,
比如mega8发送的实际上是 af AF 01 01 01 01 ,但arm板接收到的可能是 ae af 00 01 01 01
但也不是每次都是错误的,多次观察发现 ,一般出错的时候,都是在每个字节的第一个高位,被丢到,比如 af会被接收成ae,01会被接收成 00,02会被接收成00
继续进行测试:
1、用一个成熟的 uab转ttl电平的模块,替代 arm板,通过 ttl转 485模块,转换成485信号后,与mega8+485通讯电路,进行通讯 ,发现发送和接受都是正常了,不会出现上述的问题
uab转ttl电平的模块 的ttl电平与arm板的ttl电平的却别就在于,usb的是 5v,而 arm板的是 3.3v;
2、用一个成熟的 uab转485的模块,替代mega8+485通讯电路 , arm板上的ttl电平,通过 ttl转 485模块,转换成485信号后 , uab转485的模块 进行通讯 ,发现发送和接受都是正常了,也不会出现上述的问题 ;
至此,开始怀疑,是否是因为arm板的ttl电平是3.3v的,而 ttl转 485模块 上的 是5v的,电压不匹配造成的?但为什么给从arm板发送的数据可以顺利的到达mega8?而,接收就丢位呢?
于是做了些处理,把 ttl转 485模块 上的 rdx出来的5v做了分压,用万用表量了,平时空闲的时候,485芯片出来的 r是5。2v,分压后是 3.4v
但将三部分链接后,测试,发现结果跟没有做分压的时候是一样的
然后就彻底模糊了,不知道到底是那部分出的问题?还请各位帮忙分析一下!多谢了
|