■ 前言
爲了能夠使得基於STC單片機所組成的功能塊可以集成在一起完成實驗,通過串口進行信息交換。
本文給出了一個一對四的串口通訊HUB設計,可以使用一個具有雙UART端口的單片機與另外四個基於STC的ISP端口的單片機進行信息交換。
01實驗電路設計製作
1. AltumDesign 工程1
▲ 實驗板的原理圖
▲ 電路板的PCB圖640
▲ 焊接後的電路板
2. 管腳定義
- 分支端口功能定義:
管腳 | 符號 | 功能 |
---|---|---|
1 | +5V | 工作電源 |
2 | TXD | 連接MCU UART TXD |
3 | RXD | 連接MCU UART RXD |
- 總端口功能定義:
管腳 | 符號 | 功能 |
---|---|---|
1 | +5V | 工作電源 |
2 | GND | 底線 |
3 | RXD0 | 連接MCU的TXD |
4 | TXD0 | 連接MCU的RXD |
5 | SEL1 | 通道選擇1 |
6 | SEL2 | 通道選擇2 |
02功能測試
1.設計測試功能的STC8G1K082
▲ 測試電路的原理圖
▲ 焊接之後PCB
單片機的UART2組成對外測試端口:
管腳 | 符號 | 功能 |
---|---|---|
1 | +5V | 工作電源 |
2 | GND | 底線 |
3 | TXD2 | 連接MCU的TXD2 |
4 | RXD2 | 連接MCU的RXD2 |
2.測試功能板的單片機軟件3
- 單片機時鐘35MHz,ISPUART 波特率:460800;
○ 調試LS138的譯碼
在SEL1,SEL產生二進制方波,觀察LS138的選通波形如下:
四路的LS138的選通波形都是一樣的。
▲ LS138的選通波形
○ 串口波形發送
▲ 在四個端口可以測量得到與MCU發送相同的波形
3.測量兩個功能板
○ 功能板定義
測試功能板爲 HCTL-2020正交碼讀寫芯片 測試板。在它的SERIAL服務程序中增加命令:
} else IFARG0("sampleb") {
nNumber = HCTL2020Read();
SendChar((unsigned char)(nNumber >> 8));
SendChar((unsigned char)nNumber);
}
發送命令“sampleb”,則獲得兩個字節的數據。
▲ 測試兩塊正交角度編碼器模塊
○ 修改main程序
在通常情況下,處理串口的消息都是在void main(void)中,每1ms處理接收到字符。這樣處理完命令所需要的時間就與命令的長度相同。爲了提高處理命令的速度,需要對程序處理串口命令做如下調整:
- 提高main的loop頻率
將main程序中的 WaitTime(1),去掉。
for(;;) {
if(++nCount & 0x8000) ON(LED);
else OFF(LED);
// WaitTime(1);
//----------------------------------------------------------------------
if(++nShowCount >= 500) {
nShowCount = 0;
}
//----------------------------------------------------------------------
#if SERIALTXT_EN
ConsoleDebug();
#endif // SERIALTXT_NE
}
- 在ConsoleDebug() 處理完所有接收到的命令
void ConsoleDebug(void) {
#if UART1_EN
unsigned char ucChar;
// if(!UART1_CANRECE) return;
while(UART1_CANRECE) {
ReceChar(&ucChar);
SDPC(ucChar);
}
#endif //
}
※ 結論
注意:在使用輪訓的時候,需要將主程序能夠及時響應命令,加快命令處理循環。
▲ 實驗平臺測量過程