本文來(lái)源電子發(fā)燒友社區(qū),作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2287001_1_1.html
上一篇講了pwm,這一篇來(lái)介紹下串口的試用。
1. 串口通信介紹
串口通信指串口按位(bit)發(fā)送和接收字節(jié)。盡管比特字節(jié)(byte)的串行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。串口通信協(xié)議是指規(guī)定了數(shù)據(jù)包的內(nèi)容,內(nèi)容包含了起始位、主體數(shù)據(jù)、校驗(yàn)位及停止位,雙方需要約定一致的數(shù)據(jù)包格式才能正常收發(fā)數(shù)據(jù)的有關(guān)規(guī)范。在串口通信中,常用的協(xié)議包括RS-232、RS-422和RS-485。
2. haawking勇士板上的串口
從原理圖上可以看到串口發(fā)送和接收管腳通過(guò)ch340g芯片轉(zhuǎn)成了miniusb接口,用miniusb轉(zhuǎn)usb的數(shù)據(jù)線就可以把電腦和板子接起來(lái)。
CH340 是一個(gè)USB 總線的轉(zhuǎn)接芯片,實(shí)現(xiàn)USB 轉(zhuǎn)串口、USB 轉(zhuǎn)IrDA 紅外或者USB 轉(zhuǎn)打印口。
在串口方式下,CH340 提供常用的MODEM聯(lián)絡(luò)信號(hào),用于為計(jì)算機(jī)擴(kuò)展異步串口,或者將普通的串口設(shè)備直接升級(jí)到USB 總線。
在紅外方式下,CH340 外加紅外收發(fā)器即可構(gòu)成USB 紅外線適配器,實(shí)現(xiàn)SIR 紅外線通訊。
3. 上代碼
如前面原理中所說(shuō)通信雙方需要約定一致的數(shù)據(jù)包格式,我在實(shí)驗(yàn)中用9600波特率,數(shù)據(jù)位8位、無(wú)校驗(yàn)位,停止位為1。向電腦端發(fā)送一些配置信息后,輸出hello haawking!。代碼如下。
復(fù)制代碼
復(fù)制代碼
4. 實(shí)際運(yùn)行效果
在電腦端打開(kāi)串口調(diào)試助手,打開(kāi)對(duì)應(yīng)串口,設(shè)置9600波特率,數(shù)據(jù)位8位、無(wú)校驗(yàn)位,停止位為1,信息顯示為ascii,板子上電之后就會(huì)在串口調(diào)試助手里接收到hello haaking!信息。截圖如下。
上一篇講了pwm,這一篇來(lái)介紹下串口的試用。
1. 串口通信介紹
串口通信指串口按位(bit)發(fā)送和接收字節(jié)。盡管比特字節(jié)(byte)的串行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。串口通信協(xié)議是指規(guī)定了數(shù)據(jù)包的內(nèi)容,內(nèi)容包含了起始位、主體數(shù)據(jù)、校驗(yàn)位及停止位,雙方需要約定一致的數(shù)據(jù)包格式才能正常收發(fā)數(shù)據(jù)的有關(guān)規(guī)范。在串口通信中,常用的協(xié)議包括RS-232、RS-422和RS-485。
2. haawking勇士板上的串口
從原理圖上可以看到串口發(fā)送和接收管腳通過(guò)ch340g芯片轉(zhuǎn)成了miniusb接口,用miniusb轉(zhuǎn)usb的數(shù)據(jù)線就可以把電腦和板子接起來(lái)。
CH340 是一個(gè)USB 總線的轉(zhuǎn)接芯片,實(shí)現(xiàn)USB 轉(zhuǎn)串口、USB 轉(zhuǎn)IrDA 紅外或者USB 轉(zhuǎn)打印口。
在串口方式下,CH340 提供常用的MODEM聯(lián)絡(luò)信號(hào),用于為計(jì)算機(jī)擴(kuò)展異步串口,或者將普通的串口設(shè)備直接升級(jí)到USB 總線。
在紅外方式下,CH340 外加紅外收發(fā)器即可構(gòu)成USB 紅外線適配器,實(shí)現(xiàn)SIR 紅外線通訊。
3. 上代碼
如前面原理中所說(shuō)通信雙方需要約定一致的數(shù)據(jù)包格式,我在實(shí)驗(yàn)中用9600波特率,數(shù)據(jù)位8位、無(wú)校驗(yàn)位,停止位為1。向電腦端發(fā)送一些配置信息后,輸出hello haawking!。代碼如下。
- /*主程序入口*/
- int main(void)
- {
- /*初始化系統(tǒng)控制*/
- InitSysCtrl();
- /*初始化內(nèi)存控制寄存器,使能內(nèi)存流水線模式*/
- InitFlash();
- /*初始化串口通信的GPIO口*/
- /*GPIO28: SCIRXDA*/
- /*GPIO29: SCITXDA*/
- InitSciGpio();
- /*關(guān)閉中斷*/
- DINT;
- /*初始化PIE控制*/
- InitPieCtrl();
- /*關(guān)閉CPU中斷,清除中斷標(biāo)志位*/
- IER = 0x0000;
- IFR = 0x0000;
- /*初始化PIE中斷向量表*/
- InitPieVectTable();
- /*SCI寄存器配置*/
- Scia_Config(9600);
- /*使能外部中斷和CPU中斷*/
- EINT;
- /*通過(guò)SCI發(fā)送字符串*/
- 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;
- }
- /******************************************************************
- *函數(shù)名:Scia_Config(uint32 baud)
- *參 數(shù): baud,串口波特率
- *返回值:無(wú)
- *作 用: SCIA 初始化配置
- ******************************************************************/
- void Scia_Config(uint32 baud)
- {
- uint32 div = 0;
- uint32 divsel = 0;
- uint32 lospcp = 0;
- uint32 lspclk = 0;
- uint16 brr = 0;
- //獲取系統(tǒng)時(shí)鐘的倍頻、分頻和低速外部時(shí)鐘的值
- div = SysCtrlRegs.PLLCR.bit.DIV;
- divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
- lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
- if (lospcp != 0)
- {
- lospcp = lospcp * 2;
- }
- else
- {
- lospcp = 1;
- }
- /*分頻值設(shè)置
- divsel為 0時(shí),系統(tǒng)時(shí)鐘4分頻
- divsel為 1時(shí),系統(tǒng)時(shí)鐘4分頻
- divsel為 2時(shí),系統(tǒng)時(shí)鐘2分頻
- divsel為 3時(shí),系統(tǒng)時(shí)鐘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 停止位設(shè)置 0:一個(gè)停止位 1:兩個(gè)停止位*/
- SciaRegs.SCICCR.bit.STOPBITS = 0;
- /*SCI 奇偶校驗(yàn)位 0:奇偶校驗(yàn) 1:偶偶校驗(yàn)*/
- SciaRegs.SCICCR.bit.PARITY = 0;
- /*SCI 奇偶校驗(yàn)使能 0:關(guān)閉 1:?jiǎn)⒂?/
- SciaRegs.SCICCR.bit.PARITYENA = 0;
- /*SCI 字符長(zhǎng)度 0:1個(gè)字長(zhǎng)1:2個(gè)字長(zhǎng) ... 7:8個(gè)字長(zhǎng)*/
- SciaRegs.SCICCR.bit.SCICHAR = 7;
- /*使能SCI的發(fā)送機(jī)和接收機(jī)*/
- 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 發(fā)送中斷使能*/
- SciaRegs.SCICTL2.bit.TXINTENA = 1;
- /*SCI 接收中斷使能*/
- SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
- /*SCI 指定發(fā)送和接收中斷處理函數(shù),該寄存器受EALLOW保護(hù)*/
- 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 軟件復(fù)位,重新啟動(dòng)SCI*/
- SciaRegs.SCICTL1.bit.SWRESET = 1;
- }
4. 實(shí)際運(yùn)行效果
在電腦端打開(kāi)串口調(diào)試助手,打開(kāi)對(duì)應(yīng)串口,設(shè)置9600波特率,數(shù)據(jù)位8位、無(wú)校驗(yàn)位,停止位為1,信息顯示為ascii,板子上電之后就會(huì)在串口調(diào)試助手里接收到hello haaking!信息。截圖如下。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
中科昊芯
+關(guān)注
關(guān)注
5文章
84瀏覽量
5891 -
開(kāi)發(fā)板試用
+關(guān)注
關(guān)注
3文章
303瀏覽量
2643
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
【獲獎(jiǎng)名單】2025開(kāi)發(fā)板評(píng)測(cè)大賽優(yōu)秀開(kāi)發(fā)者、最受歡迎開(kāi)發(fā)板公布
各位發(fā)燒友們,大家好!2025開(kāi)發(fā)板試用評(píng)測(cè)大賽已圓滿落幕。經(jīng)過(guò)廠商與發(fā)燒友平臺(tái)的共同評(píng)選,優(yōu)秀作品及人選名單現(xiàn)已評(píng)選完成,共選出24位優(yōu)秀作品開(kāi)發(fā)者,被評(píng)選上的用戶將獲得榮譽(yù)證書(shū)。各工程師參與完
發(fā)表于 11-21 09:31
【作品合集】中科昊芯Core_DSC280025C開(kāi)發(fā)板測(cè)評(píng)
。
活動(dòng)詳情地址:【RISC-V專(zhuān)題】中科昊芯Core_DSC280025C開(kāi)發(fā)板免費(fèi)試用
作者
發(fā)表于 09-18 10:52
【作品精選】2025電子發(fā)燒友開(kāi)發(fā)板測(cè)評(píng)大賽作品合集!
Milk-V Duo S 開(kāi)發(fā)板免費(fèi)試用
玄鐵Banana Pi BPI-RV2開(kāi)發(fā)板試用
玄鐵Banana Pi BPI-CanMV-K230D-Zero17
發(fā)表于 09-03 15:24
中科昊芯Core_DSC280025C開(kāi)發(fā)板的外部中斷問(wèn)題
獲得中科昊芯Core_DSC280025C開(kāi)發(fā)板開(kāi)發(fā)板后,我就抓緊時(shí)間研究,無(wú)奈學(xué)識(shí)淺薄,學(xué)得很
發(fā)表于 08-08 22:06
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】---LED閃爍燈
中科昊芯Core_DSC280025C開(kāi)發(fā)板試使用了昊芯
發(fā)表于 08-07 11:51
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+4. CAN外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開(kāi)發(fā)板,這是一款DSP的開(kāi)發(fā)板
發(fā)表于 08-05 20:46
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+SCI測(cè)試與代碼解讀
Core_DSC280025C核心板使用了昊芯HXS320F28025CRISC-V DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)核。核
發(fā)表于 07-17 10:42
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+3.DSP基礎(chǔ)外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開(kāi)發(fā)板,這是一款DSP的開(kāi)發(fā)板
發(fā)表于 07-13 16:07
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+2.RAM工程與FLASH工程對(duì)比
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開(kāi)發(fā)板,這是一款DSP的開(kāi)發(fā)板
發(fā)表于 07-04 10:37
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+1.開(kāi)箱之浮點(diǎn)計(jì)算對(duì)比
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+1.開(kāi)箱之浮點(diǎn)計(jì)算對(duì)比
前言
大家好,
發(fā)表于 06-29 10:01
有獎(jiǎng)丨米爾 瑞芯微RK3506開(kāi)發(fā)板免費(fèi)試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3506應(yīng)用處理器的MYD-YR3506開(kāi)發(fā)板免費(fèi)試用名額來(lái)啦~~米爾提供了3塊價(jià)值299元的MYD-YR3506
有獎(jiǎng)丨米爾 瑞芯微RK3562開(kāi)發(fā)板免費(fèi)試用新增名額!
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3562應(yīng)用處理器的MYD-YR3562開(kāi)發(fā)板免費(fèi)試用名額增加
中科昊芯Core_DSC280025C開(kāi)發(fā)板免費(fèi)試用
Core_DSC280025C核心板使用了昊芯HXS320F28025C RISC-V ? DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)
中科昊芯DSP產(chǎn)品及公司信息
庫(kù)和驅(qū)動(dòng)庫(kù),幫助用戶降低遷移成本,縮短開(kāi)發(fā)周期。同時(shí),公司還推出了多種開(kāi)發(fā)板和核心板,如Core_DSC28027和Start_DSC280
發(fā)表于 04-07 09:16
有獎(jiǎng)丨米爾 瑞芯微YR3562開(kāi)發(fā)板免費(fèi)試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3562應(yīng)用處理器的MYD-YR3562開(kāi)發(fā)板免費(fèi)試用活動(dòng)來(lái)啦~~米爾提供了3塊價(jià)值599元的MYD-YR3562

【中科昊芯Start_DSC28027勇士開(kāi)發(fā)板試用體驗(yàn)】串口與上位機(jī)通信
評(píng)論