- 12條回答
-
ywujwerwx
07-20 10:13
原因有很多,還是上電路圖...
-
金利恒電子譚小姐
07-19 00:58
485芯片的2、3腳連在一起控制的,用單片機控制的,就是這個控制端要么一直低可以接收數(shù)據(jù),要么一直高發(fā)送數(shù)據(jù),就是不能那種脈沖式工作,平時低,發(fā)送時才變成高。
-
zongyueli
07-21 23:47
485片子的RE/DE要控制好,否則就會出這種問題,有時序要求的。
-
www033
07-21 14:00
485的收發(fā)控制切換后,要有一定的延時,然后再發(fā)送或者接收數(shù)據(jù)。
曾經(jīng)用DSP調試過MAX1480A(帶隔離的485,單工),開啟接收或者是發(fā)送后,延時時間需要40us,然后接收或者發(fā)送數(shù)據(jù)。在由發(fā)送切換為接收時,延時需要200us,不然不能正確接收數(shù)據(jù)。
-
60user142
07-15 23:40
說明樓主的電路或軟件存在問題,檢查數(shù)據(jù)發(fā)送期間方向控制電平是否穩(wěn)定,同時給出接口電路圖。
-
ujuwefwf
07-20 13:36
感覺LZ的道理也很清楚,應當是現(xiàn)場問題,別人幫不上。
換個芯片試試。
-
vuwyewss
07-21 05:17
建議:
1、檢查硬件電路,比如A-B間的匹配電阻;
2、程序打斷點,用示波器關注485芯片的使能腳電平變化是否跟你預想的一樣;
3、用串口助手監(jiān)控485總線上的收發(fā)數(shù)據(jù)是否正確。
根據(jù)LZ的描述,應該是收發(fā)控制的時序問題,遇到問題多靜心思考。
-
腦洞大賽11
07-22 08:41
上圖會才好分析
-
Green_LJ
07-18 17:57
RW = 1;
Delay_us(40);
HalUARTWrite( SERIALPORT, Data[5],6);
Delay_us(200);
RW = 0;
就是發(fā)不出去,如果讓RW一直等于1,就可以發(fā)送出去,數(shù)據(jù)也是對的?;蛘呷绻鸕W一直等于0,則也可以接收,數(shù)據(jù)也是對的,為什么哪?硬件應該沒問題吧,時序也對,還有什么情況產(chǎn)生這種現(xiàn)象哪?
-
小馬哥996
07-22 21:37
可能你HalUARTWrite( SERIALPORT, Data[5],6);這個子程序中沒有等到所有數(shù)據(jù)發(fā)送完成就退出了
要特別注意最后一個字節(jié)是否發(fā)送,
通常數(shù)據(jù)寫入到發(fā)送緩沖,只代表啟動一個字節(jié)的發(fā)送,不代表發(fā)送完成的!
對WR=0的操作一定要等到發(fā)送完成才可以!
比如51芯片,產(chǎn)生發(fā)送中斷時,只表示SBUF的數(shù)據(jù)已被取走,但數(shù)據(jù)還沒有被發(fā)送哦,此時
如果將WR改為0,將會導致最后一個字節(jié)出錯
-
nvywerwrq
07-18 23:22
做了幾個試驗,因為沒有示波器所以頭痛,只能通過程序試驗,有趣的是我設為連續(xù)發(fā)送比如3個后將WR設為0,這時只能發(fā)送成功2組,最后一個數(shù)據(jù)發(fā)不出去,如果設連續(xù)發(fā)送4組數(shù)據(jù),前面三個成功,最后一個也不成功,調用發(fā)送程序后我加了大概200mS的延時才讓RW=0,也不行。各位什么情況?我的發(fā)送子程序也看了沒什么問題,如果有問題,前面的2組也不會成功。
-
iwqudwnd
07-21 08:46
只要是發(fā)送后將RW=0,它前面的那組就發(fā)送不出去,我查了單片機內部的檢測位,如傳送字節(jié)狀態(tài):
0 字節(jié)沒有被傳送
1 寫到數(shù)據(jù)緩存寄存器的最后字節(jié)被傳送
這里我是等這個位等于1后又延時了50ms再拉低讀寫控制位也不行,而且加這個延時多少好象也沒有起到很大作用,各位大神,幫幫忙吧?我真的沒有辦法了。