本文來源電子發燒友社區,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2287001_1_1.html
上一篇講了pwm,這一篇來介紹下串口的試用。
1. 串口通信介紹
串口通信指串口按位(bit)發送和接收字節。盡管比特字節(byte)的串行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。串口通信協議是指規定了數據包的內容,內容包含了起始位、主體數據、校驗位及停止位,雙方需要約定一致的數據包格式才能正常收發數據的有關規范。在串口通信中,常用的協議包括RS-232、RS-422和RS-485。
2. haawking勇士板上的串口
從原理圖上可以看到串口發送和接收管腳通過ch340g芯片轉成了miniusb接口,用miniusb轉usb的數據線就可以把電腦和板子接起來。
CH340 是一個USB 總線的轉接芯片,實現USB 轉串口、USB 轉IrDA 紅外或者USB 轉打印口。
在串口方式下,CH340 提供常用的MODEM聯絡信號,用于為計算機擴展異步串口,或者將普通的串口設備直接升級到USB 總線。
在紅外方式下,CH340 外加紅外收發器即可構成USB 紅外線適配器,實現SIR 紅外線通訊。
3. 上代碼
如前面原理中所說通信雙方需要約定一致的數據包格式,我在實驗中用9600波特率,數據位8位、無校驗位,停止位為1。向電腦端發送一些配置信息后,輸出hello haawking!。代碼如下。
復制代碼
復制代碼
4. 實際運行效果
在電腦端打開串口調試助手,打開對應串口,設置9600波特率,數據位8位、無校驗位,停止位為1,信息顯示為ascii,板子上電之后就會在串口調試助手里接收到hello haaking!信息。截圖如下。
上一篇講了pwm,這一篇來介紹下串口的試用。
1. 串口通信介紹
串口通信指串口按位(bit)發送和接收字節。盡管比特字節(byte)的串行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。串口通信協議是指規定了數據包的內容,內容包含了起始位、主體數據、校驗位及停止位,雙方需要約定一致的數據包格式才能正常收發數據的有關規范。在串口通信中,常用的協議包括RS-232、RS-422和RS-485。
2. haawking勇士板上的串口
從原理圖上可以看到串口發送和接收管腳通過ch340g芯片轉成了miniusb接口,用miniusb轉usb的數據線就可以把電腦和板子接起來。
CH340 是一個USB 總線的轉接芯片,實現USB 轉串口、USB 轉IrDA 紅外或者USB 轉打印口。
在串口方式下,CH340 提供常用的MODEM聯絡信號,用于為計算機擴展異步串口,或者將普通的串口設備直接升級到USB 總線。
在紅外方式下,CH340 外加紅外收發器即可構成USB 紅外線適配器,實現SIR 紅外線通訊。
3. 上代碼
如前面原理中所說通信雙方需要約定一致的數據包格式,我在實驗中用9600波特率,數據位8位、無校驗位,停止位為1。向電腦端發送一些配置信息后,輸出hello haawking!。代碼如下。
- /*主程序入口*/
- int main(void)
- {
- /*初始化系統控制*/
- InitSysCtrl();
- /*初始化內存控制寄存器,使能內存流水線模式*/
- InitFlash();
- /*初始化串口通信的GPIO口*/
- /*GPIO28: SCIRXDA*/
- /*GPIO29: SCITXDA*/
- InitSciGpio();
- /*關閉中斷*/
- DINT;
- /*初始化PIE控制*/
- InitPieCtrl();
- /*關閉CPU中斷,清除中斷標志位*/
- IER = 0x0000;
- IFR = 0x0000;
- /*初始化PIE中斷向量表*/
- InitPieVectTable();
- /*SCI寄存器配置*/
- Scia_Config(9600);
- /*使能外部中斷和CPU中斷*/
- EINT;
- /*通過SCI發送字符串*/
- Scia_Print("--------- sci interrupt test ----------rn");
- Scia_Print("Baud Rate: 9600rn");
- Scia_Print("Data Bits: 8rn");
- Scia_Print("Parity: nonern");
- Scia_Print("Stop Bits: 1rn");
- Scia_Print("Hello Haawking!rn");
- Scia_Print("rn");
- for (;;)
- {
- }
- return 0;
- }
- /******************************************************************
- *函數名:Scia_Config(uint32 baud)
- *參 數: baud,串口波特率
- *返回值:無
- *作 用: SCIA 初始化配置
- ******************************************************************/
- void Scia_Config(uint32 baud)
- {
- uint32 div = 0;
- uint32 divsel = 0;
- uint32 lospcp = 0;
- uint32 lspclk = 0;
- uint16 brr = 0;
- //獲取系統時鐘的倍頻、分頻和低速外部時鐘的值
- div = SysCtrlRegs.PLLCR.bit.DIV;
- divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
- lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
- if (lospcp != 0)
- {
- lospcp = lospcp * 2;
- }
- else
- {
- lospcp = 1;
- }
- /*分頻值設置
- divsel為 0時,系統時鐘4分頻
- divsel為 1時,系統時鐘4分頻
- divsel為 2時,系統時鐘2分頻
- divsel為 3時,系統時鐘1分頻*/
- switch (divsel)
- {
- case 0:
- case 1:
- lspclk = 12000000 * div / 4 / lospcp;
- break;
- case 2:
- lspclk = 12000000 * div / 2 / lospcp;
- break;
- case 3:
- lspclk = 12000000 * div / 1 / lospcp;
- break;
- }
- brr = lspclk / (baud * 8) - 1;
- /*SCI 停止位設置 0:一個停止位 1:兩個停止位*/
- SciaRegs.SCICCR.bit.STOPBITS = 0;
- /*SCI 奇偶校驗位 0:奇偶校驗 1:偶偶校驗*/
- SciaRegs.SCICCR.bit.PARITY = 0;
- /*SCI 奇偶校驗使能 0:關閉 1:啟用*/
- SciaRegs.SCICCR.bit.PARITYENA = 0;
- /*SCI 字符長度 0:1個字長1:2個字長 ... 7:8個字長*/
- SciaRegs.SCICCR.bit.SCICHAR = 7;
- /*使能SCI的發送機和接收機*/
- SciaRegs.SCICTL1.bit.TXENA = 1;
- SciaRegs.SCICTL1.bit.RXENA = 1;
- /*SCI 16位波特率選擇寄存器 高8位*/
- SciaRegs.SCIHBAUD = (uint8) ((brr >> 8) & 0xff);
- /*SCI 16位波特率選擇寄存器 低8位*/
- SciaRegs.SCILBAUD = (uint8) (brr & 0xff);
- /*SCI 發送中斷使能*/
- SciaRegs.SCICTL2.bit.TXINTENA = 1;
- /*SCI 接收中斷使能*/
- SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
- /*SCI 指定發送和接收中斷處理函數,該寄存器受EALLOW保護*/
- EALLOW;
- PieVectTable.SCIRXINTA = &sciaRxIsr;
- PieVectTable.SCITXINTA = &sciaTxIsr;
- EDIS;
- /*PIE Group 9, SCIRXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
- /*PIE Group 9, SCITXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
- IER_ENABLE(M_INT9);
- /*SCI 軟件復位,重新啟動SCI*/
- SciaRegs.SCICTL1.bit.SWRESET = 1;
- }
4. 實際運行效果
在電腦端打開串口調試助手,打開對應串口,設置9600波特率,數據位8位、無校驗位,停止位為1,信息顯示為ascii,板子上電之后就會在串口調試助手里接收到hello haaking!信息。截圖如下。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
中科昊芯
+關注
關注
5文章
80瀏覽量
5211 -
開發板試用
+關注
關注
3文章
301瀏覽量
2135
發布評論請先 登錄
相關推薦
STM32F103上位機升級,RS485升級、CAN升級
STM32F103_IAP開發板,用STM32F103RCT6主控芯片,例程用標準庫開發。基本串口RS232\\RS485通信及CAN接口升級學習方案
發表于 01-03 08:57
有獎丨米爾 全志T536開發板免費試用
米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起試用活動您不僅可以免
瑞芯微平臺Android系統串口測試方法,觸覺智能RK3562開發板演示
瑞芯微方案主板Android系統串口測試方法,通用RK3568、RK3566、RK3588、RK3576等。觸覺智能RK3562開發板演示
瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示
本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
基于Arduino的串口通信項目
基于Arduino的串口通信項目涉及多個方面,包括硬件連接、軟件編程、串口參數配置等。 一、硬件準備 Arduino開發板 :確保你有一塊Arduino
追加名額丨米爾瑞芯微RK3576開發板有獎試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
有獎丨米爾 瑞芯微RK3576開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
linux開發板和單片機開發的區別
硬件架構 Linux開發板和單片機開發在硬件架構上有很大的區別。Linux開發板通常基于ARM、x86或其他處理器架構,具有較高的處理能力和內存容量。而單片
上位機與下位機實時通信的實現
在工業自動化、遠程控制、數據采集與處理等領域,上位機與下位機之間的實時通信是實現高效、準確的數據交換和系統控制的基礎。本文旨在介紹實現上位
點擊參與米爾NXP i.MX 93開發板有獎試用
米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
開發板使用ASCLIN Master通信,串口發送的數據,開發板收不到是怎么回事?
開發板使用ASCLIN Master通信,通過LIN調試器和電腦的上位機通信,目前開發板發送的8
發表于 06-04 13:09
評論