久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STC單片機串口多片并聯的嘗試與難題 [打印本頁]

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

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

1. 五個前端單片機的地端大面積敷銅是5個一整片好,還是每個單獨敷銅再小線聯通或者一點接地好呢?

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

3.當五個藍牙放在同一個盒子而且彼此很接近時是否會出現無法預測的干擾?有沒有這方面的經驗?

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

打樣板:

新設計:




作者: xzh5508    時間: 2018-3-26 16:32
多片連接一個串口,如果同時發送過來的話,你一個串口是接收不過來的吧!
作者: kevin0142    時間: 2018-3-26 16:35
1、單獨鋪最好。
作者: 鷹狐    時間: 2018-3-26 17:26
建議使用多選一芯片連接,由第六片單片機控制選擇端口,收到可以接受數據時選通相應通道進行接收,你的誤碼我從你描述來看主要來自一個地方,串口空閑狀態Tx是保持低位輸出的,如果單片機驅動不強那發送數據的單片機沒法拉高Tx,那你的數據肯定會出錯,除非你空閑狀態將串口引腳重新初始化為浮置,這顯然不符合軟件設計思路,通訊效率會低很多,所以使用多選一芯片肯定更適合你的使用場合。當然也有可能你自己已經規避了這個問題,只是我沒理解到,希望我的想法能幫到你。
作者: kingd    時間: 2018-3-26 21:11
多個之間會有干擾的
作者: dalaoshi    時間: 2018-3-27 01:13
各位好!謝謝各位的回應。
xzh5508: 每個前端單片機在發出訊號前都會先檢查是否允許,所以不會接收不過來。程序如下:
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單片機的串口在空閑的時候是高電位的,應該是弱上拉雙向輸出入口,可能設定為其他IO口模式
會改善,但不確定那些IO口模式設定是否也對串口有效。有待實驗,我分析了輸出的MIDI碼,都是在同一行出錯,這是否意味著硬件干擾的可能性比較低,因為干擾應該隨機發生的,但我在設計新打樣板時一定要把可能出現的干擾降低,所以加了很多0.1u電容哈。
使用多選一芯片應該是好辦法,但是我很想知道究竟STC多串口并聯的方式是否確實可用,而且最多能并上幾個而不出錯。
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個前端機        
000C15C0   1   1     90    3C    10    1  C  4 Note On     ;第2個前端機     
000C15C2   1   1     90    3C    10    1  C  4 Note On     ;第3個前端機
000C15C8   1   1     90    3C    10    1  C  4 Note On     ;第4個前端機
000C161A   1   1     90    3C    10    1  C  4 Note On     ;第5個前端機
000C1662   1   1     90    40    30    1  E  4 Note On      ;第1個前端機   
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   開始出錯            
000C2142   1   1     90    00    40    1  C -1 Note On               
000C2143   1   1     90    00    00    1  C -1 Note Off              


作者: dalaoshi    時間: 2018-3-30 00:53
經過幾天調試,結果是,5片STC12的RX并聯輸出到一片STC12的TX是可行的,不必經過什么晶體管隔離,亂碼問題是由于單片機的軟件還有些問題,前端單片機輸出時除了必須等待允許輸出的腳的高電位,在輸出完畢后還必須檢測允許輸出的腳回到低電位才可以離開,否則在剩余時間里若緩沖里還有數據要輸出就會再輸出而因為時間不夠而產生亂碼,程序更正如下:
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    時間: 2024-3-23 15:50
請問一下樓主,這5個MCU的輸出TX是并聯一起接到主MCU的RX嗎?不是加了二極管?
作者: dalaoshi    時間: 2024-3-23 22:40
tianxiongweitxw 發表于 2024-3-23 15:50
請問一下樓主,這5個MCU的輸出TX是并聯一起接到主MCU的RX嗎?不是加了二極管?

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

原來當年寫錯了RX和TX, 是“5片STC12的TX并聯輸出到一片STC12的RX是可行的”,我那時常把TX和RX對調,MCU端的TX來到藍牙接口就稱為RX,MCU端的RX來到藍牙接口就稱為TX,結果常常混淆了。
作者: TTQ001    時間: 2024-3-24 02:04
感謝與我們分享設計和問題。 這真的很有幫助。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本激情视频网 | 成年人精品视频 | 久久人人爽人人爽人人片av免费 | 日韩电影a | 久草在线| 亚洲精品福利视频 | 99成人| 黄视频免费| 黄色网络在线观看 | 精品一二区 | 免费午夜视频 | 日韩区 | www久久久 | 精品久久久久久久人人人人传媒 | 国产综合精品一区二区三区 | 伦理午夜电影免费观看 | 午夜黄色 | 欧美91| 欧美日本韩国一区二区三区 | 91久久久久| 欧美精品在线免费观看 | 成人毛片网| 97国产超碰 | 波多野结衣一区二区三区在线观看 | 欧美精品一区二区三区在线播放 | www.一区二区三区 | 久久久久久综合 | 999精品视频| 亚洲精品字幕 | 日韩一区二区在线播放 | 国产精品成人69xxx免费视频 | 中文字幕 亚洲一区 | 男人的天堂一级片 | 久久精品中文 | 九九成人| 久久久久亚洲 | 91精品www| 黄色片大全在线观看 | 国产一区二区三区四区五区加勒比 | 一区二区小视频 | 一级黄色影片在线观看 |