在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【南京中科微CSM32RV20開發板試用體驗】UART的簡單應用,實現數據發送接收

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-30 11:09 ? 次閱讀

本文來源電子發燒友社區,作者:xcs101, 帖子地址:https://bbs.elecfans.com/jishu_2244470_1_1.html

UART發送接收回環效果視頻(開發板體驗視頻,詳見作者原文鏈接內容)

本帖最后由 xcs101 于 2022-1-21 10:本次實驗還是延續之前的點亮一個LED的例程,該程序本身已對UART進行初始化。
一、UART介紹
通用異步收發器(UART)提供了一種靈活的方法來與使用工業標準 NRZ 異步串行數據格式的外部設備之間進行全雙工數據交換。UART 利用分數波特率發生器提供寬范圍的波特率選擇。具備以下功能:
●全雙工的,異步通信
● NRZ 標準格式
● 分數波特率發生器系統
● 支持波特率自適應
● 可編程數據字長度(8 位或 9 位)
● 單線半雙工通信
● 單獨的發送器和接收器使能位
檢測標志
● 傳輸結束標志
● 多處理器通信

芯片內置四個 UART,UART1 支持 ISP下載程序,串口由 S0CON 控制,而實際傳輸的數據則在 S0BUF 寄存器中讀取或寫入。傳輸速度(波特率)是通過配置 uartdiv 來選擇的。
串口支持波特率自適應,通過測出 RX 引腳上接收信號的波特率并將其配置
到波特率寄存器中實現。使用方法如下:
1) 配置 MCU 和外設使用同一個時鐘來源;
(設置時鐘源選擇寄存器(CMU_CLK_SEL),選擇 MCU 和外設的時鐘源。)
2) 配置 baudtrim = 1,trim_en 寫 0;
3) 配置 baudtrim = 1,trim_en 寫 1;
4) RX 接收 UART 幀,幀中的低電平只能是 1 位寬;
5) 等到 trim_en 變為 0,讀出 trim_clk_result 的結果;
6) 使用 trim_clk_result 作為 uart 的波特率設置
二、UART相關函數
1、初始化函數
UART的初始化函數分2種模式:


  1. void UART_Init_case1(UART_TypeDef *UARTx); //非中斷模式
  2. void UART_Init_IT_case1(UART_TypeDef *UARTx); //中斷模式
復制代碼

相關設置直接在這兩個函數里面進行修改即可,下面看看非中斷模式:

需要注意的地方是demo里面的波特率是用16MHz時鐘計算出來的,開發板上用的是32MHz,使用時需要在對應波特率上翻倍。
pYYBAGHpJrmAHkx5AACu3zGQZls773.png



  1. void UART_Init_case1(UART_TypeDef *UARTx) //非中斷模式
  2. {
  3. if(UARTx==UART1)
  4. {
  5. GPIO_MODE_Init(GPIOA,PIN5,GPIO_MODE_AF);
  6. GPIO_MODE_Init(GPIOA,PIN6,GPIO_MODE_AF);
  7. GPIO_AF_Init(GPIOA,PIN5,GPIO_AF0);
  8. GPIO_AF_Init(GPIOA,PIN6,GPIO_AF0);
  9. }
  10. else if(UARTx==UART2)
  11. {
  12. GPIO_MODE_Init(GPIOA,PIN3,GPIO_MODE_AF);
  13. GPIO_MODE_Init(GPIOA,PIN4,GPIO_MODE_AF);
  14. GPIO_AF_Init(GPIOA,PIN3,GPIO_AF3);
  15. GPIO_AF_Init(GPIOA,PIN4,GPIO_AF3);
  16. }
  17. else if(UARTx==UART3)
  18. {
  19. GPIO_MODE_Init(GPIOA,PIN10,GPIO_MODE_AF);
  20. GPIO_MODE_Init(GPIOA,PIN11,GPIO_MODE_AF);
  21. GPIO_AF_Init(GPIOA,PIN10,GPIO_AF3);
  22. GPIO_AF_Init(GPIOA,PIN11,GPIO_AF3);
  23. }
  24. else if(UARTx==UART4)
  25. {
  26. GPIO_MODE_Init(GPIOA,PIN14,GPIO_MODE_AF);
  27. GPIO_MODE_Init(GPIOA,PIN15,GPIO_MODE_AF);
  28. GPIO_AF_Init(GPIOA,PIN14,GPIO_AF3);
  29. GPIO_AF_Init(GPIOA,PIN15,GPIO_AF3);
  30. }
  31. UARTx->CTRL = 0<<25? ?? ???//發送中斷使能: 0-off,1-on
  32. |0<<24? ?? ???//接收中斷使能:0-off,1-on
  33. |0x0116<<8? ? //波特率(對應16M時鐘):
  34. //0x1a0b-2400,0x0683-9600,0x0341-19200,0x0116-57600,0x008b-115200
  35. //0x0045-230400,0x0023-460800(CSMISP未支持波特率0x0011-921600,0x000d-1128800)
  36. //波特率(對應32M時鐘):
  37. //0x1a0b-4800,0x0683-19200,0x0341-38400,0x0116-115200,0x008b-230400
  38. //0x0045-460800(CSMISP未支持波特率0x0023-921600,0x0011-1843200,0x000d-2257600)
  39. |1<<6? ?? ?? ?//模式選擇:0-模式0,1-模式1,2/3-模式2
  40. |0<<5? ?? ?? ?//多處理器使能
  41. |1<<4? ?? ?? ?//接收使能
  42. |0<<3? ?? ?? ?//發送數據bit8
  43. |0<<2;? ?? ???//接收數據bit8
  44. }
復制代碼



2、發送接收函數


  1. void Uart_Send(UART_TypeDef *UARTx,uint8_t *packet,uint16_t lenth);//適用于非中斷發送模式
  2. void Uart_Reveive(UART_TypeDef *UARTx,uint8_t *packet,uint16_t lenth);//適用于非中斷發送模式
  3. void UART1_putchar(uint8_t ubyte);//數據放入緩存,適用于中斷模式
  4. uint8_t UART1_getchar(void);//取數據緩存
復制代碼


庫函數里已經封裝好int ee_printf(const char *fmt, ...),可直接使用進行文本發送,也可以使用intprintf (const char *__restrict, ...) ,不過使用ee_printf生成的elf文件相對大一些。
三、程序設計
在main函數主循環里編寫以下程序,完成UART的接收發送回環實驗。


  1. uint8_t upack1[20] = {0,1,2,3,4,5,6,7,8,9};//定義一個數組
  2. Uart_Reveive(UART1,upack1,2);//適用于非中斷發送模式
  3. Uart_Send(UART1,upack1,2);//適用于非中斷發送模式
復制代碼

程序很簡單,接收函數定義了要接收的數據長度,接收完成后再將數據發送出去。
但是因為void Uart_Reveive(UART_TypeDef *UARTx,uint8_t *packet,uint16_t lenth);//適用于非中斷發送模式的原因,如果沒有接收到數據,程序會一直處于等待接收狀態,無法執行下一步程序。


  1. void Uart_Reveive(UART_TypeDef *UARTx,uint8_t *packet,uint16_t lenth)//適用于非中斷發送模式
  2. {
  3. for(uint16_t i=0;i< lenth;i++)
  4. {
  5. while(!(UARTx->CTRL&0x00000001));//如果沒有接收到數據
  6. !(UARTx->CTRL&0x00000001)
  7. =1
  8. packet[i] = UARTx->DATA;
  9. UARTx->CTRL |= 0x00000001U;
  10. }
  11. }
復制代碼


四、效果展示
poYBAGHpkgCAO53fABGEPVxAzbw251.gif

使用CSM-ISP對結果進行驗證,發送20H 22H,能夠返回20H 22H,程序成功運行。
在驗證過程中發現,采用HEX模式發送非HEX數據,例如“LED”會導致CSM-ISP軟件奔潰,建議調試UART時,使用sscom進行調試。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • uart
    +關注

    關注

    22

    文章

    1240

    瀏覽量

    101491
  • 開發板
    +關注

    關注

    25

    文章

    5081

    瀏覽量

    97703
  • sscom
    +關注

    關注

    0

    文章

    4

    瀏覽量

    4056
  • 南京中科微
    +關注

    關注

    0

    文章

    60

    瀏覽量

    784
  • CSM32RV20
    +關注

    關注

    0

    文章

    40

    瀏覽量

    230
收藏 人收藏

    評論

    相關推薦

    有獎丨米爾 全志T536開發板免費試用

    米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起試用活動您不僅可以免
    的頭像 發表于 12-26 08:05 ?154次閱讀
    有獎丨米爾 全志T536<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    【RA-Eco-RA4E2-64PIN-V1.0開發板試用】+03+UART+控制舵機+控制LED

    【RA-Eco-RA4E2-64PIN-V1.0開發板試用】+03+UART控制舵機 1、引言 本來想完成CAN的測試發現控制上沒有CAN的驅動,所以本篇測評報告主要完成通過串口助手
    發表于 12-18 22:39

    【敏矽ME32G070開發板免費體驗】\\+Lora通信終端產品開發項目

    【敏矽ME32G070開發板免費體驗】+Lora通信終端產品開發項目 零. 寫在前面 0.1項目簡介: Lora通信項目,計劃LLCC68+ME32G070組合實現
    發表于 12-15 18:26

    【米爾-紫光PG2L100H國產FPGA開發板試用】串口通信功能測試

    開發板的串口通信功能完全正常,通信穩定可靠。官方提供的UART示例工程設計合理,操作簡單直觀,能夠滿足基本的串口通信需求。建議開發者在進行更復雜的通信
    發表于 12-06 10:51

    追加名額丨米爾瑞芯RK3576開發板有獎試用

    米爾與瑞芯合作發布的新品基于瑞芯RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
    的頭像 發表于 11-22 01:00 ?212次閱讀
    追加名額丨米爾瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?269次閱讀
    【RA8D1<b class='flag-5'>試用</b>活動】RA8D1B-CPKCOR<b class='flag-5'>開發板</b>移植linux

    常用在工業控制系統上的MCU芯片資料:CSM32RV20

    CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 內置RISC-V RV32IMAC內核(2.6CoreMark/MHz); 蕞高32MHz工作頻率; 內置4kB的SRAM; 內置8B
    的頭像 發表于 11-15 17:19 ?256次閱讀
    常用在工業控制系統上的MCU芯片資料:<b class='flag-5'>CSM32RV20</b>

    有獎丨米爾 瑞芯RK3576開發板免費試用

    米爾與瑞芯合作發布的新品基于瑞芯RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
    的頭像 發表于 11-12 01:00 ?351次閱讀
    有獎丨米爾 瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名
    的頭像 發表于 11-09 01:02 ?280次閱讀
    有獎<b class='flag-5'>試用</b>!!RA-Eco-RA4E2-64PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動開始報名

    ElfBoard技術貼|如何在NXP源碼基礎上適配ELF 1開發板UART功能

    UART即通用異步收發器,是一種支持全雙工串行通信協議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發板,實際引出
    的頭像 發表于 09-25 13:56 ?2355次閱讀
    ElfBoard技術貼|如何在NXP源碼基礎上適配ELF 1<b class='flag-5'>開發板</b>的<b class='flag-5'>UART</b>功能

    【xG24 Matter開發套件試用體驗】8-UART收發數據

    1 介紹 開發板引出了UART串口,根據原理圖搭建uart開發環境,通過USB轉TTL串口和串口調試助手進行uart接口的
    發表于 08-13 08:13

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
    的頭像 發表于 06-13 08:02 ?570次閱讀
    點擊參與米爾NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    開發板使用ASCLIN Master通信,串口發送數據開發板收不到是怎么回事?

    開發板使用ASCLIN Master通信,通過LIN調試器和電腦的上位機通信,目前開發板發送的8byte數據,上位機的串口能接收到,但是串口
    發表于 06-04 13:09

    在全志H616核桃派開發板GPIO基礎實驗之UART串口通訊

    參考: 運行Python代碼 運行后可以看到電腦串口助手接收到信息: 在串口助手發送欄輸入信息,點擊發送,可以看到thonny下方終端打印接收到的
    發表于 05-24 14:09

    免費!NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?751次閱讀
    免費!NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>
    主站蜘蛛池模板: 色在线视频播放| 欧美成人区| 亚洲成人网页| 日本一本在线视频| www.淫.com| 久久久五月| 日本不卡高清免费v日本| 一级毛片日韩| 性做久久久久久久免费观看| 香蕉久久高清国产精品免费| 久久婷人人澡人人爽| 一女多夫嗯啊高h| 69老司机亚洲精品一区| 天天操狠狠| 午夜影视在线免费观看| ww欧洲ww在线视频看ww| 久久艹综合| 久青草视频免费视频播放线路1| 日韩一级欧美一级一级国产 | 免费一级欧美在线观看视频片| 特黄特黄视频| 在线免费色| 国产精品久久久久久一级毛片| 又粗又大又爽又色又过瘾视频| 国产大片黄在线看免费| 欧美在线性| 精品国产1000部91麻豆| 久久中文字幕一区二区三区| 亚洲国产激情在线一区| 亚洲成在人线中文字幕| 日本xxxx色视频在线观看免费| 狠狠se| 丁香花在线电影小说观看| 国产成人精品一区二区仙踪林| 国产成人精品免费视频大全可播放的 | 午夜三级理论在线观看视频| 亚洲444444在线观看| 美女扒尿口给男人桶到爽| 在线播放真实国产乱子伦| 日韩黄色成人| aaaa欧美高清免费|