发新帖我要提问
12
返回列表
打印

请高手出出主意,I/O口数据读取

[复制链接]
楼主: zzz3535
手机看帖
扫描二维码
随时随地手机跟帖
21
zzz3535|  楼主 | 2014-8-31 16:04 | 只看该作者 回帖奖励 |倒序浏览
NE5532 发表于 2014-8-31 11:20
你就先按照串口2400的波特率读出来看是不是数据。

你好,厂家和我说的也是波特率2400,并且开始的头也是B,从波形上看也是B,但是这个波形一位是200us,我自己测过,9600波特率一位约是100us,那200us不就是4800波特率吗?

厂家用的是义隆的单片机,自身没有串口,是模拟串口做的程序,它们告诉我用I/O加上拉模拟串口做一下,但我发现模拟串口程序接收不太好调,就直接用单片机的RXD接收,然后用485转232模块发给电脑,2400波特率也测过,数据不对,是不是硬件上这么做不行呢?谢谢!请帮我分析分析:)

使用特权

评论回复
22
tudou21| | 2014-8-31 16:35 | 只看该作者
(1)这个的确有点奇怪,按照2400的波特率,每一个位的时间是417us左右。你上面最小的位的200us左右,这个就是不正确了。
(2)我尝试将2400的波特率改成4800的波特率来计算。则200us就是约为1位的时间,
a) 1
b) 0
c) 1111111111
d) 00000
e) 111
f) 000
这样,如果是串口协议,起始位是1位地,结束位是1位高,数据位是8位,有可能有1位的校验位。分析后发现,如果(a)段是真正的一个数据帧的开始的话,则(b)(c)段就是0xFF(假设C段包含了8个数据1, 1个校验位,1个停止位),但是后面的def解析的时候发现多了一位数据,不符合串口的格式。
(3)所以我认为可能是两点。
(a)数据通讯使用了串口通讯,波特率是4800,所谓的单根线是信号线是一根,还有一根底线,主机和从机是单向通信。
(b)你抓的数据a不是真正一个数据帧的开始,可能是中间的一段, 如果有完整的数据,可能能够分析数据的。

使用特权

评论回复
23
NE5532| | 2014-8-31 16:35 | 只看该作者
那有可能是4800的波特,你也不用拿单片机做了,直接用232芯片转了用PC串口来读。另外的建议是,搞清楚到底要干什么,能有厂家支持的,就直接问做的厂家,没有的,就搞清楚要做什么,可以推翻重做,也可以不搞清楚直接照抄。

使用特权

评论回复
24
zzz3535|  楼主 | 2014-8-31 17:01 | 只看该作者
tudou21 发表于 2014-8-31 16:35
(1)这个的确有点奇怪,按照2400的波特率,每一个位的时间是417us左右。你上面最小的位的200us左右,这个 ...

谢谢你的分析,其实说实话,我只记住a,b,c,d的波形了,e,f的波形我记的不太准,只是大概,因为只记得后面有的脉冲是600us,有的是640us,明天我把完整的波形贴出来。

使用特权

评论回复
25
zzz3535|  楼主 | 2014-8-31 17:07 | 只看该作者
NE5532 发表于 2014-8-31 16:35
那有可能是4800的波特,你也不用拿单片机做了,直接用232芯片转了用PC串口来读。另外的建议是,搞清楚到底 ...

硬件上很奇怪,就是如果把对讲门主机的数据线直接接到单片机的RXD端,然后232芯片转了用PC串口读,就会出现对讲门主机只要一按房号,对讲主机就会复位。如果拔掉232线,就不会复位,但是如果用485转串口接收数据就不会出现这个问题。

使用特权

评论回复
26
tudou21| | 2014-8-31 17:26 | 只看该作者
zzz3535 发表于 2014-8-31 17:07
硬件上很奇怪,就是如果把对讲门主机的数据线直接接到单片机的RXD端,然后232芯片转了用PC串口读,就会出 ...

现在很多稍微好点的示波器(Tek 3000/4000, R&S等),内部都已经带了常规的通讯总线的解析,如RS232, SPI, I2C等,你如果用232转接板连接PC机会引起复位的话,可以用示波器内部来做解析。

使用特权

评论回复
27
NE5532| | 2014-8-31 18:16 | 只看该作者
检查你的PC机电源插座接地是否良好,复位的原因可能是电源漏电,查一下你的485转换器是否有隔离功能就可以确定了。另外建议你把我上面的回复“仔细”读一下。

使用特权

评论回复
28
zzz3535|  楼主 | 2014-8-31 19:29 | 只看该作者
NE5532 发表于 2014-8-31 18:16
检查你的PC机电源插座接地是否良好,复位的原因可能是电源漏电,查一下你的485转换器是否有隔离功能就可以 ...

谢谢你的回复,你是说我根本不用先研究单片机的程序,只要把对讲门主机的数据线接到MAX232芯片,然后在电脑上直接就可以读数?说实话还真没这么用过,明天我一定要试试,厂家说协议什么的都没有,另外我前几天一直只试的是1个启始位,1个停止位的情况,其它情况我再试试看。

使用特权

评论回复
29
NE5532| | 2014-8-31 19:33 | 只看该作者
呵呵,遇到事情先往简单地方想嘛,做门禁,又不是做运载火箭,都是山寨厂家,哪有那么多时间自己去搞总线协议呢。

使用特权

评论回复
30
zzz3535|  楼主 | 2014-8-31 19:51 | 只看该作者
zzz3535 发表于 2014-8-31 19:29
谢谢你的回复,你是说我根本不用先研究单片机的程序,只要把对讲门主机的数据线接到MAX232芯片,然后在电 ...

我想如果直接接到232芯片后,很可能也是复位吧。

使用特权

评论回复
31
NE5532| | 2014-8-31 21:53 | 只看该作者
一个输入端,接在总线上监听以后引起复位,你说是什么原因?

使用特权

评论回复
32
tudou21| | 2014-9-1 09:44 | 只看该作者
NE5532 发表于 2014-8-31 21:53
一个输入端,接在总线上监听以后引起复位,你说是什么原因?

共地了没有?

使用特权

评论回复
33
winhi| | 2014-9-1 11:13 | 只看该作者
确定是串口协议,根据所测量到的最小电平宽度,可以计算出波特率。
然后用TTL转USB串口,在电脑上运行串口助手,可以得到通讯的数据。
然后就是数据分析了,,,,,,

使用特权

评论回复
34
zzz3535|  楼主 | 2014-9-1 11:45 | 只看该作者

顶一下

本帖最后由 zzz3535 于 2014-9-1 15:30 编辑

:)

使用特权

评论回复
35
zzz3535|  楼主 | 2014-9-1 12:02 | 只看该作者

请看完整波形

本帖最后由 zzz3535 于 2014-9-1 15:29 编辑

这是比较完整的波形,请大家帮帮忙,谢谢!

呼叫1001房间.jpg (328 KB )

呼叫1001房间.jpg

呼叫2001房间.jpg (280 KB )

呼叫2001房间.jpg

使用特权

评论回复
36
zzz3535|  楼主 | 2014-9-1 15:27 | 只看该作者
tudou21 发表于 2014-8-31 16:35
(1)这个的确有点奇怪,按照2400的波特率,每一个位的时间是417us左右。你上面最小的位的200us左右,这个 ...

你好,今天我抓到了完整的波形,请帮忙分析分析,谢谢!

呼叫2001房间.jpg (280 KB )

呼叫2001房间.jpg

呼叫1001房间.jpg (328 KB )

呼叫1001房间.jpg

使用特权

评论回复
37
zzz3535|  楼主 | 2014-9-3 11:31 | 只看该作者
协议对出来了,一个窄脉冲表示0,一个宽脉冲表示1,得出十六进制数后,再简单转换一下就可以了。

使用特权

评论回复
38
bestray| | 2014-9-9 16:25 | 只看该作者
要协议,么得协议就示波器量看时序关系~

使用特权

评论回复
39
wangguiyuan1983| | 2014-9-14 22:18 | 只看该作者
围观!!!

使用特权

评论回复
40
zhouarm| | 2014-9-16 15:06 | 只看该作者
看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则