欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STC單片機(jī)串口多片并聯(lián)的嘗試與難題 [打印本頁]

作者: dalaoshi    時(shí)間: 2018-3-25 20:59
標(biāo)題: STC單片機(jī)串口多片并聯(lián)的嘗試與難題
     這是我最近嘗試制作的無線MIDI訊號(hào)合并器(merger), 目的是要讓多個(gè)(五個(gè))音樂鍵盤同時(shí)彈奏時(shí)可以輸入到一個(gè)音源,前端的藍(lán)牙接收器已經(jīng)測試過可用,現(xiàn)在是要把五個(gè)接收器做在同意個(gè)盒子里,將輸出合并到第六個(gè)單片機(jī)再輸出到MIDI插座,MIDI訊號(hào)的合并相當(dāng)麻煩,時(shí)序非常重要,一個(gè)完整的MIDI訊號(hào)有3個(gè)或2個(gè)字節(jié),必須接收到一個(gè)通道的完整訊號(hào)后才能夠再接收另一個(gè)通道的訊號(hào),否則會(huì)出錯(cuò)。具體辦法是,前端的單片機(jī)在發(fā)出訊號(hào)前先檢查某一個(gè)接腳是否為高電位,若不是就等待,是則一次過發(fā)出一整個(gè)MIDI訊號(hào)(需時(shí)32X10=320US X 3(BYTES)=960US ), 第6個(gè)單片機(jī)用T0定時(shí)順序給前端的單片機(jī)發(fā)出高電位允許傳送,5個(gè)前端單片機(jī)的TX口直接連在一起再聯(lián)到第6個(gè)單片機(jī)的RX口。

    這個(gè)辦法已經(jīng)用打樣板測試過能行,問題在于偶爾會(huì)出現(xiàn)誤碼,我查了好幾天都無法完全消除誤碼,懷疑是干擾所致,因此打算調(diào)整底板另外打樣再測試,由于我畫線路板的經(jīng)驗(yàn)很少,只到了“布通”的水平,對什么么EMC干擾一無所知,所以上載給各位前輩幫忙看看,看犯了什么低級(jí)錯(cuò)誤,并問幾個(gè)問題,希望各位前輩指點(diǎn)一下:

1. 五個(gè)前端單片機(jī)的地端大面積敷銅是5個(gè)一整片好,還是每個(gè)單獨(dú)敷銅再小線聯(lián)通或者一點(diǎn)接地好呢?

2. 如何加強(qiáng)多串口連接的抗干擾能力呢?我嘗試用470歐姆電阻上拉也沒有什么效果,后來嘗試用一粒PNP晶體管作第12345單片機(jī)RX與第6單片機(jī)TX之間的隔離(晶體管E接6TX,C接地,B通過2.2K接5RX)好像也沒有什么改進(jìn),不過卻意外得到一個(gè)好處,原本第6個(gè)單片機(jī)燒錄程序時(shí)必須斷開TX與前端單片機(jī)RX的連接,否者無法燒錄,用了這個(gè)晶體管后燒錄就不成問題了。

3.當(dāng)五個(gè)藍(lán)牙放在同一個(gè)盒子而且彼此很接近時(shí)是否會(huì)出現(xiàn)無法預(yù)測的干擾?有沒有這方面的經(jīng)驗(yàn)?

4.如何加裝更多0.1u電容一抗擊干擾?貼片的0.1u電容是否比多層電容抗干擾差?

打樣板:

新設(shè)計(jì):




作者: xzh5508    時(shí)間: 2018-3-26 16:32
多片連接一個(gè)串口,如果同時(shí)發(fā)送過來的話,你一個(gè)串口是接收不過來的吧!
作者: kevin0142    時(shí)間: 2018-3-26 16:35
1、單獨(dú)鋪?zhàn)詈谩?hr noshade size="2" width="100%" color="#808080"> 作者: 鷹狐    時(shí)間: 2018-3-26 17:26
建議使用多選一芯片連接,由第六片單片機(jī)控制選擇端口,收到可以接受數(shù)據(jù)時(shí)選通相應(yīng)通道進(jìn)行接收,你的誤碼我從你描述來看主要來自一個(gè)地方,串口空閑狀態(tài)Tx是保持低位輸出的,如果單片機(jī)驅(qū)動(dòng)不強(qiáng)那發(fā)送數(shù)據(jù)的單片機(jī)沒法拉高Tx,那你的數(shù)據(jù)肯定會(huì)出錯(cuò),除非你空閑狀態(tài)將串口引腳重新初始化為浮置,這顯然不符合軟件設(shè)計(jì)思路,通訊效率會(huì)低很多,所以使用多選一芯片肯定更適合你的使用場合。當(dāng)然也有可能你自己已經(jīng)規(guī)避了這個(gè)問題,只是我沒理解到,希望我的想法能幫到你。
作者: kingd    時(shí)間: 2018-3-26 21:11
多個(gè)之間會(huì)有干擾的
作者: dalaoshi    時(shí)間: 2018-3-27 01:13
各位好!謝謝各位的回應(yīng)。
xzh5508: 每個(gè)前端單片機(jī)在發(fā)出訊號(hào)前都會(huì)先檢查是否允許,所以不會(huì)接收不過來。程序如下:
SENTOUTWAIT:                   ;THIS IS FOR MERGE WAIT ;CHECK INPUT STATUS BEFORE SENT
JNB P1.5,SENTOUTWAIT     ;P1.5 NOT YET HIGH SO WAIT
SETB P1.7
MOV R4, 31H                        ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
MOV R4, 32H                        ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
JB 38H, SENTOUTWAITEXIT  ;ONLY 2 VALID BYTES SO JUMP
MOV R4, 33H                        ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
SENTOUTWAITEXIT:
CLR 38H
RET

鷹狐: STC單片機(jī)的串口在空閑的時(shí)候是高電位的,應(yīng)該是弱上拉雙向輸出入口,可能設(shè)定為其他IO口模式
會(huì)改善,但不確定那些IO口模式設(shè)定是否也對串口有效。有待實(shí)驗(yàn),我分析了輸出的MIDI碼,都是在同一行出錯(cuò),這是否意味著硬件干擾的可能性比較低,因?yàn)楦蓴_應(yīng)該隨機(jī)發(fā)生的,但我在設(shè)計(jì)新打樣板時(shí)一定要把可能出現(xiàn)的干擾降低,所以加了很多0.1u電容哈。
使用多選一芯片應(yīng)該是好辦法,但是我很想知道究竟STC多串口并聯(lián)的方式是否確實(shí)可用,而且最多能并上幾個(gè)而不出錯(cuò)。
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT               
000C1573   1   1     C0    00    --    1  ---  PC: Acc. Grand Piano  
000C15BB   1   1     90    3C    10    1  C  4 Note On     ;第1個(gè)前端機(jī)        
000C15C0   1   1     90    3C    10    1  C  4 Note On     ;第2個(gè)前端機(jī)     
000C15C2   1   1     90    3C    10    1  C  4 Note On     ;第3個(gè)前端機(jī)
000C15C8   1   1     90    3C    10    1  C  4 Note On     ;第4個(gè)前端機(jī)
000C161A   1   1     90    3C    10    1  C  4 Note On     ;第5個(gè)前端機(jī)
000C1662   1   1     90    40    30    1  E  4 Note On      ;第1個(gè)前端機(jī)   
000C1667   1   1     90    40    30    1  E  4 Note On               
000C1669   1   1     90    40    30    1  E  4 Note On               
000C166C   1   1     90    40    30    1  E  4 Note On               
000C16C1   1   1     90    40    30    1  E  4 Note On               
000C17A9   1   1     90    43    40    1  G  4 Note On               
000C17AE   1   1     90    43    40    1  G  4 Note On               
000C17AF   1   1     90    43    40    1  G  4 Note On               
000C17B3   1   1     90    43    40    1  G  4 Note On               
000C1808   1   1     90    43    40    1  G  4 Note On               
000C1993   1   1     90    48    60    1  C  5 Note On               
000C1998   1   1     90    48    60    1  C  5 Note On               
000C199A   1   1     90    48    60    1  C  5 Note On               
000C199C   1   1     90    48    60    1  C  5 Note On               
000C19F2   1   1     90    48    60    1  C  5 Note On               
000C213B   1   1     80    3C    00    1  C  4 Note Off              
000C213C   1   1     80    40    00    1  E  4 Note Off              
000C213E   1   1     80    3C    00    1  C  4 Note Off              
000C213F   1   1     80    40    00    1  E  4 Note Off              
000C2141   1   1     90    00    00    1  C -1 Note Off   開始出錯(cuò)            
000C2142   1   1     90    00    40    1  C -1 Note On               
000C2143   1   1     90    00    00    1  C -1 Note Off              


作者: dalaoshi    時(shí)間: 2018-3-30 00:53
經(jīng)過幾天調(diào)試,結(jié)果是,5片STC12的RX并聯(lián)輸出到一片STC12的TX是可行的,不必經(jīng)過什么晶體管隔離,亂碼問題是由于單片機(jī)的軟件還有些問題,前端單片機(jī)輸出時(shí)除了必須等待允許輸出的腳的高電位,在輸出完畢后還必須檢測允許輸出的腳回到低電位才可以離開,否則在剩余時(shí)間里若緩沖里還有數(shù)據(jù)要輸出就會(huì)再輸出而因?yàn)闀r(shí)間不夠而產(chǎn)生亂碼,程序更正如下:
SENTOUTWAIT:            ;THIS IS FOR MERGE WAIT ;CHECK INPUT STATUS BEFORE SENT
JNB P1.5,SENTOUTWAIT
SETB P1.7
MOV R4, 31H             ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
MOV R4, 32H             ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
JB 38H, SENTOUTWAITEXIT  ;ONLY 2 VALID BYTES
MOV R4, 33H                         ;STORE DATA FOR CLOCK OUT IN R4
LCALL SENTONEBYTE2
SENTOUTWAITEXIT:
JB P1.5, SENTOUTWAITEXIT  ;WAIT FOR LOW
CLR 38H
RET


作者: tianxiongweitxw    時(shí)間: 2024-3-23 15:50
請問一下樓主,這5個(gè)MCU的輸出TX是并聯(lián)一起接到主MCU的RX嗎?不是加了二極管?
作者: dalaoshi    時(shí)間: 2024-3-23 22:40
tianxiongweitxw 發(fā)表于 2024-3-23 15:50
請問一下樓主,這5個(gè)MCU的輸出TX是并聯(lián)一起接到主MCU的RX嗎?不是加了二極管?

這個(gè)項(xiàng)目我已經(jīng)完成但不必再用,5個(gè)副機(jī)的確可以直接接在一起,沒什么二極管,實(shí)際測試過可以用。
作者: dalaoshi    時(shí)間: 2024-3-23 22:50
tianxiongweitxw 發(fā)表于 2024-3-23 15:50
請問一下樓主,這5個(gè)MCU的輸出TX是并聯(lián)一起接到主MCU的RX嗎?不是加了二極管?

原來當(dāng)年寫錯(cuò)了RX和TX, 是“5片STC12的TX并聯(lián)輸出到一片STC12的RX是可行的”,我那時(shí)常把TX和RX對調(diào),MCU端的TX來到藍(lán)牙接口就稱為RX,MCU端的RX來到藍(lán)牙接口就稱為TX,結(jié)果常常混淆了。
作者: TTQ001    時(shí)間: 2024-3-24 02:04
感謝與我們分享設(shè)計(jì)和問題。 這真的很有幫助。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1