第一節 硬件解讀
大家的開發板到手之后,可以看見,只有一個USB口,那個口就是串口,開發板A和開發板B共用一個串口,通過按鍵切換。
我們以開發板A為例,原理圖如下:
開發板A芯片上面的PA2和PA3分別是NODEA_USART_TX和NODEA_USART_RX,而開發板A和Debugger開發板的連接如下:
通過查看CH443K芯片的引腳可以得到,SEL引腳的高低電平,可以讓CH443K芯片在1腳4腳連接或者3腳4腳連接中選擇。CH443K芯片引腳說明如下:
當CH443K芯片的SEL為高電平時,其芯片COM和CH1引腳導通。DEBUGGER_TX和B_TX導通,DEBUGGER_RX和B_RX導通;反之DEBUGGER_TX和A_TX導通,DEBUGGER_RX和A_RX導通。
那么,DEBUGGER_TX和DEBUGGER_RX連接在哪?當然是DAPLINK板的MCU上面啦,如下圖:
連接到Debugger板的MCU之后,這個MCU通過內部程序(不需要我們寫,比賽的時候已經寫好了)轉到唯一的USB口上,也就是我們的串口上。
第二節 CuebMX的配置
第一步:選擇PA2的引腳的USART2_Tx功能,如下圖:
第二步:選擇PA3引腳的USART_RX功能,如下圖:
第三步:發現USART相關的引腳是黃色的,不是綠色的,這是為什么呢?注意:黃色是異常提醒,綠色是正常的。
第四步:如下圖配置USART2。注意:2代表的是異步全雙工通信;6代表波特率,數據長度,校驗位和停止位。這里波特率是115200,比賽基本上都是9600。
其中:具體Mode配置信息如下:
Mode:代表串口模式,配置為(異步)Asynchronous,(同步主機)Synchronous Master,(同步從機)Synchronous Slave,(單線半雙工)Single Wire (Half - Duplex),(多處理器通信)Multiprocessor Communication,(紅外通訊)IrDA ,(局域互聯網模式)LIN ,(智能卡模式)SmartCard ;
Hard Flow Control RS232:代表RS232的硬件控制流,常用引腳為CTS,RTC,CTS/RTS或者Disabled;
Hard Flow Control RS485:代表RS485的硬件控制流;
其中:具體Configuration配置信息如下:
Baud Rate:代表串口波特率,常用波特率為9600,115200等;
Word Length:代表字節位,常用字節為:7位,8位或者9位;
Parity:代表校驗位;常用為:(無校驗)None,(奇校驗)Even或者Odd(偶校驗)Odd;
Stop Bits:代表停止位,常用為:0.5,1,1.5或者2;
Data Direction:代表數據傳輸方向,常用為(發送和接收)Receive and Transmit,(接收)Receive或者(發送)Transmit;
Over Sampling:代表過采樣,常用為8倍采樣和16倍采樣,8倍采樣,也就是一個數據位采樣8次,16倍則是16次。采樣率高精度會高一些,當然相應的功耗也會變高;
Single Sample:代表單次采樣,使能時使用單次采樣值,否則使用三次采樣值。前面的過采樣會有8或16次采樣值,當選擇單次采樣時,會使用其中的一次采樣值作為數據位邏輯電平的結果。三次采樣則用三次采樣的判斷結果為準。同樣三次采樣也是為了確保數據的準確性。
ClockPrescaler:代表時鐘預分頻器;
Fifo Mode:代表數據緩存模式;
Txfifo Threshold:代表發送數據的閾值;
Rxfifo Threshold:代表接收數據的閾值;
Auto Baudrate:代表自動波特率,顧名思義,可以根據接收到的數據進行波特率自適應;
TX Pin Active Level Inversion:代表發送電平反轉,發送引腳電平極性反轉,正常情況下空閑電平為高電平,使能該功能后變成空閑電平為低電平;
RX Pin Active Level Inversion:代表接收電平反轉,接收引腳電平極性反轉,正常情況下空閑電平為高電平,使能該功能后變成空閑電平為低電平;
Data Inversion:代表數據電平反轉收發數據的邏輯電平極性反轉,正常是高電平為邏輯1,低電平為邏輯0,使能該功能后則變成低電平為邏輯1,高電平為邏輯0。校驗位也隨著反轉;
TX and RX Pins Swapping:代表收發引腳互換,接收和發送引腳互換,適用于外部硬件連線錯誤時進行切換。
Overrun:代表溢出檢測,:用于開啟接收溢出檢測,使用該功能后,當接收數據未取出時,又接收到一個數據,此時會觸發一個溢出標志。
DMA on RX Error:代表接收錯誤時不禁用DMA,使能該功能后,即使出現接收錯誤也不會關閉DMA傳輸;
MSB First:代表數據高位先發,正常數據是先發低位再發高位,使能該功能后可以先發高位數據;
第三節 MDK代碼
第一步:編寫串口發送函數,如下圖:
第二步:聲明串口發送函數,如下圖:
第三步:編寫主函數,如下圖:
第四步,配置MicroLIB庫,如下:【注意:不使用printf,可以不配置;如果使用printf但是不配置,程序將卡死】
第五步:配置好下載器之后,編譯代碼,下載即可。
第六步:打開串口軟件,如下圖配置:選擇串口號;接收緩存區選擇HEX模式,波特率選擇115200;串口號請掃描,選擇正確的串口號,不一定是COM4;最后打開串口。
? ?
第四節 實驗現象
注意:
1,請用USB線連接電腦與開發板;
2,請選擇A開發板;
3,一定要勾選微庫。
現象:
1,串口發送以115200波特率發送數據。
來源:撞上電子微信公眾號
版權:東莞市東城墨竹公子電子工作室
日期:2024.11.13
第五節 課后作業
利用按鍵,串口打印按鍵按下的次數。
-
STM32
+關注
關注
2270文章
10914瀏覽量
356723 -
串口
+關注
關注
14文章
1557瀏覽量
76717 -
開發板
+關注
關注
25文章
5087瀏覽量
97792
發布評論請先 登錄
相關推薦
評論