国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

【產品應用】AWorksLP 樣例詳解(MR6450)——UART

AGk5_ZLG_zhiyua ? 來源:未知 ? 2022-12-23 22:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AWorksLP 對外設進行了高度抽象化,為同一類外設提供了相同的接口,應用程序可以輕松跨平臺。本文以MR6450平臺為例,介紹AWorksLP UART 外設基本用法。


??簡介

UART(Universal Asynchronous Receiver/Transmitter)是一種通用異步收發傳輸器,其使用串行的方式在雙機之間進行數據交換,實現全雙工通信。數據引腳僅包含用于接收數據的RXD和用于發送數據的TXD。數據在數據線上一位一位的串行傳輸,要正確解析這些數據,必須遵循UART協議,以下簡述幾個關鍵的概念:
  • 波特率

    波特率決定了數據傳輸速率,其表示每秒傳送數據的位數,值越大,數據通信的速率越高,數據傳輸得越快。常見的波特率有4800、9600、14400、19200、38400、115200等等,若波特率為115200,則表示每秒鐘可以傳輸115200位(注意:是bit,不是byte)數據。

  • 空閑位

    數據線上沒有數據傳輸時,數據線處于空閑狀態。空閑狀態的電平邏輯為“1”。

  • 起始位
    起始位表示一幀數據傳輸的開始,起始位的電平邏輯是“0”。
  • 數據位

    緊接起始位后,即為實際通信傳輸的數據,數據的位數可以是5、6、7、8等,數據傳輸時,從最低位開始依次傳輸。
  • 偶校驗位

    奇偶校驗位用于接收方對數據進行校驗,及時發現由于通信故障等問題造成的錯誤數據。奇偶校驗位是可選的,可以不使用奇偶校驗位。奇偶校驗有奇校驗和偶校驗兩種形式,該位的邏輯電平與校驗方法和所有數據位中邏輯“1”的個數相關。

    1. 奇校驗:通過設置該位的值(“1”或“0”),使該位和數據位中邏輯“1”的總個數為奇數。例如,數據位為8位,值為:10011001,“1”的個數為4個(偶數),則奇校驗時,為了使“1”的個數為奇數,就要設置奇偶校驗位的值為“1”,使“1”的總個數為5個(奇數)。

    2. 偶校驗:通過設置該位的值(“1”或“0”),使該位和數據位中邏輯“1”的總個數為偶數。例如,數據位為8位,值為:10011001,“1”的個數為4個(偶數),則偶校驗時,為了使“1”的個數為偶數,就要設置奇偶校驗位的值為0,使“1”的個數保持不變,為4(偶數)。

    通信雙方使用的校驗方法應該一致,接收方通過判斷“1”的個數是否為奇數(奇校驗)或偶數(偶校驗)來判定數據在通信過程中是否出錯。

  • 停止位

    停止位表示一幀數據的結束,其電平邏輯為“1”,其寬度可以是1位、1.5位、2位。即其持續的時間為位數乘以傳輸一位的時間(由波特率決定),例如,波特率為115200,則傳輸一位的時間為1/115200秒,約為8.68us。若停止位的寬度為1.5位,則表示停止位持續的時間為:1.5 × 8.68us ≈ 13us。
常見的幀格式為:1位起始位,8位數據位,無校驗,1位停止位。由于起始位的寬度恒為1位,不會變化,而數據位,校驗位和停止位都是可變的,因此,往往在描述串口通信協議時,都只是描述其波特率、數據位,校驗位和停止位,不再單獨說明起始位。

注意:

通信雙方必須使用完全相同的配置,包括波特率、起始位、數據位、停止位等。如果配置不一致,則通信數據會錯亂,不能正常通信。在通信中,若出現亂碼的情況,應該首先檢查通信雙方所使用的配置是否一致。


接口介紹

表1 函數列表

函數原型

簡要描述

aw_err_t aw_serial_flush_read (int fd);

串口刷新讀取

aw_err_t aw_serial_dcb_set (int fd, const struct aw_serial_dcb *p_dcb);

配置串口設備參數

aw_err_t aw_serial_dcb_get (int fd, struct aw_serial_dcb *p_dcb);

獲取串口設備配置參數

aw_err_t aw_serial_timeout_set (int fd, struct aw_serial_timeout *p_cfg);

配置超時參數

aw_err_t aw_serial_timeout_get (int fd, struct aw_serial_timeout *p_cfg);

獲取超時參數

下表為UART接口相關結構體類型。
表2 結構體類型表

類型

簡要描述

struct aw_serial_dcb

串口配置結構描述

struct aw_serial_timeout

串口超時設置

UART 配置信息說明:

1. aw_serial_dcb:

struct aw_serial_dcb {
uint32_t baud_rate;
uint32_t byte_size:4;
uint32_t f_parity:1;
uint32_t parity:1;
uint32_t stop_bits:2;
uint32_t f_ctsflow:1;
uint32_t f_rtsctrl:2;
uint32_t f_dsrsensitivity:1;
uint32_t f_dsrflow:1;
uint32_t f_dtrctrl:2;
uint32_t f_outx:1;
uint32_t f_inx:1;
uint32_t f_fast_respond_recv:1;
uint32_t f_dummy:14;
uint16_t xon_lim;
uint16_t xoff_lim;
char xon_char;
char xoff_char;
};

成員詳解:

  • baud_rate:波特率;

  • byte_size:數據位寬度,范圍:[5:8];

  • f_parity:奇偶校驗,1:使能0:禁能;

  • parity:校驗方法;

表3 串口校驗方法取值表

宏定義

含義

AW_SERIAL_EVENPARITY

偶效驗

AW_SERIAL_ODDPARITY

奇效驗

  • stop_bits:停止位數;

表4 串口停止位數取值表

宏定義

含義

AW_SERIAL_ONESTOPBIT

1 位停止位

AW_SERIAL_ONE5STOPTS

1.5 位停止位

AW_SERIAL_TWOSTOPBITS

2 位停止位

AW_SERIAL_STOP_INVALID

0 表示無效停止位

  • f_ctsflow:監控CTS(clear-to-send)信號作輸出流控,1:CTS無效時數據發送被掛起,0:禁能;
  • f_rtsctrl:設置RTS(request-to-send)流控;

表5 串口設備RTS(request-to-send)流控取值表

宏定義

含義

AW_SERIAL_RTS_HANDSHAKE

硬件流控

AW_SERIAL_RTS_DISABLE

軟件控制RTS無效

AW_SERIAL_RTS_ENABLE

軟件控制RTS有效

AW_SERIAL_RTS_INVALID

無效RTS

  • f_dsrsensitivity:設置dsr_sensitivity,1:對DSR信號敏感,除非DSR信號有效,否則將忽略所有接收的字節;
  • f_dsrflow:是否監控DSR(data-set-ready信號來做輸出流控),1:若DSR無效時數據發送被掛起,直至DSR有效;
  • f_dtrctrl:設置DTR(data-termial-ready)流控;

表6 串口設備DTR(data-terminal-ready)流控取值表

宏定義

含義

AW_SERIAL_DTR_HANDSHAKE

硬件流控

AW_SERIAL_DTR_DISABLE

軟件控制DTR無效

AW_SERIAL_DTR_ENABLE

軟件控制DTR有效

AW_SERIAL_DTR_INVALID

無效DTR

  • f_outx:XON/XOFF流量控制在發送時是否可用。1:當xoff值被收到時,發送停止;當xon值被收到時,發送繼續;
  • f_inx:XON/XOFF流量控制在接收時是否可用。1:當接收緩沖區中空余容量小于xoff_lim字節時,發送xoff字符;當接收緩沖區中已有xon_lim字節的空余容量時,發送xon字符,占1位;
  • f_fast_respond_recv:快速響應接收 1:使能0:禁能;

注解:

1.該配置項適用于接收時間敏感型應用,例如modbus;

2.該配置項實現通用的手段是將串口接收FIFO設置為1,當接收到一個數據后就產生接收中斷。對于沒有FIFO的串口來說,這個設置也許會被忽略。

  • f_dummy:保留位;

  • xon_lim:在XON字符發送前接收緩沖區內空余容量的最小字節數;
  • xoff_lim:在XOFF字符發送前接收緩沖區內空余容量的最大字節數;
  • xon_char:指定XON字符;
  • xoff_char:指定XOFF字符。

2. aw_serial_timeout:

struct aw_serial_timeout {
uint32_t rd_timeout;
uint32_t rd_interval_timeout;
}

成員詳解:

  • rd_timeout:讀超時時間;

  • rd_interval_timeout:碼間超時。


使用樣例

AWorksLP SDK相關使用請參考《AWorksLP SDK快速入門(MR6450)——開箱體驗》一文,本文不在贅述。

?1. UART0收發功能

{SDK}demosperipheral serial路徑下為通用UART例程,例程具體代碼如下:
#include "aworks.h"
#include "aw_task.h"
#include "aw_delay.h"
#include "aw_serial.h"
#include "aw_ioctl.h"
#include "aw_fcntl.h"
#include "aw_application_autoconf.h"
#include "aw_unistd.h"
#include "aw_vdebug.h"
#include "rtk_autoconf.h"
/**
* rief 串口 demo
* eturn 無
*/
aw_local void* __task_handle (void *parg)
{
char buf[32];
int len = 0;
struct aw_serial_dcb dcb;
aw_err_t ret;
struct aw_serial_timeout timeout;
int fd;


fd = aw_open(CONFIG_DEMO_SERIAL_DEVICE_NAME,AW_O_RDWR,0);
if(fd < 0){
aw_kprintf("serial open failed ");
aw_close(fd);
return 0;
}


/* 獲取dcb的默認配置 */
ret = aw_serial_dcb_get(fd, &dcb);
if (AW_OK != ret) {
aw_kprintf("serial get dcb failed: %d ",ret);
aw_close(fd);
return 0;
}


/* 配置串口波特率為115200,8個數據位,1位停止位,無奇偶校驗 */
dcb.baud_rate = 115200;
dcb.byte_size = 8;
dcb.stop_bits = AW_SERIAL_ONESTOPBIT;
dcb.f_parity = AW_FALSE;
ret = aw_serial_dcb_set(fd, &dcb);
if (AW_OK != ret) {
aw_kprintf("serial set dcb failed: %d ",ret);
aw_close(fd);
return 0;
}


/* 配置串口超時 */
ret = aw_serial_timeout_get(fd, &timeout);
if (AW_OK != ret) {
aw_kprintf("serial get timeout failed: %d ",ret);
aw_close(fd);
return 0;
}


timeout.rd_timeout = 1000; /* 讀總超時為1s */
timeout.rd_interval_timeout = 50; /* 碼間超時為50ms */
ret = aw_serial_timeout_set(fd, &timeout);
if (AW_OK != ret) {
aw_kprintf("serial set dcb failed: %d ",ret);
aw_close(fd);
return 0;
}


/* 收到什么數據就發送什么數據 */
AW_FOREVER {
/* 讀取數據 */
memset(buf, 0, sizeof(buf));
len = aw_read(fd, buf, sizeof(buf));
if (len > 0) {
aw_write(fd, buf, len);
aw_kprintf("%s ",buf);
}
}


aw_close(fd);
return 0;
}




AW_TASK_DECL(serial_tsk, 4096);
/******************************************************************************/
void demo_serial_int_entry (void)
{
aw_task_id_t tsk;


tsk = AW_TASK_INIT( serial_tsk,
"Serial int demo",
12,
4096,
__task_handle,
(void *)NULL);
if (tsk == NULL) {
aw_kprintf("Serial int demo task create failed ");
return;
}


if (aw_task_startup(tsk) != AW_OK) {
AW_TASK_TERMINATE(serial_tsk);
}
}

例程默認使用/dev/uart0對應開發板DUART絲印串口,其引腳位置如圖1所示:

圖1UART0排針

上述代碼中創建了一個任務,在任務中實現UART收發功能。使用aw_serial_dcb_get接口獲取串口當前的配置信息,修改波特率為115200,8個數據位,1位停止位,無奇偶校驗。使用aw_serial_dcb_set接口設置串口。使用aw_serial_timeout_get獲取串口時間相關配置信息,修改讀總超時為1s,碼間超時為50ms,使用aw_serial_timeout_set設置串口。

在AW_FOREVER 循環中使用aw_read接口讀取接收到的串口數據,若讀取到數據則使用aw_write接口把讀取到數據通過該串口發送回去,以此來實現回顯功能。

但由于/dev/uart0默認為shell所使用的串口,在shell組件中已開啟回顯,故此時實驗現象如圖2所示,會將接收到的數據輸出兩次,若需實現單次回顯,可修改shell組件所引用串口,或修改例程使用的UART設備,具體操作參考下節內容。

圖2串口打印結果

2. UART5收發功能

串口例程中默認使用的是/dev/uart0,為與例程現象描述一致,故將其修改為/dev/uart5。在開發板絲印URX1與UTX1對應設備/dev/uart5,URX2與UTX2對應設備為/dev/uart10,如圖3、圖4、圖5所示。

圖3排針處串口

圖4排針原理圖

圖5UART1對應UART5

2.1 打開config 配置腳本,選擇例程使用串口為/dev/uart5, 如圖6所示,保存后重新build 工程。

圖6UART1對應UART5

2.2 將USB 轉串口接到開發板排針絲印UTX1與URX1 的位置,重新編譯下載運行固件,會發現發送數據后不會再重復回復兩條相同的數據如圖7所示。

圖7串口打印信息

至此,UART設備的收發功能介紹完畢,更多外設的使用介紹請關注后續推文。


原文標題:【產品應用】AWorksLP 樣例詳解(MR6450)——UART

文章出處:【微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

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

    關注

    13

    文章

    422

    瀏覽量

    32553

原文標題:【產品應用】AWorksLP 樣例詳解(MR6450)——UART

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    固件燒錄速度實測:JTAG比UART快6.8倍

    在批量生產場景中,固件燒錄效率直接影響產線節拍與交付能力。如何選擇最優燒錄方式?本文以ZLG致遠電子MR6450系列核心板為,通過實測數據為您解析。MR6450核心板MR6450是Z
    的頭像 發表于 01-27 11:34 ?278次閱讀
    固件燒錄速度實測:JTAG比<b class='flag-5'>UART</b>快6.8倍

    瑞薩RL78/F22 MCU基于e2studio開發環境創建觸摸應用工程

    瑞薩RL78/F22 MCU基于e2studio開發環境創建觸摸應用工程
    的頭像 發表于 01-14 15:31 ?6000次閱讀
    瑞薩RL78/F22 MCU基于e2studio開發環境創建觸摸應用<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    瑞薩RL78/F25 MCU基于IAR開發環境創建觸摸應用工程

    瑞薩RL78/F25 MCU基于IAR開發環境創建觸摸應用工程
    的頭像 發表于 01-05 14:59 ?6906次閱讀
    瑞薩RL78/F25 MCU基于IAR開發環境創建觸摸應用<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    汽車級TL16C2550-Q1雙UART芯片:功能特性與應用詳解

    汽車級TL16C2550-Q1雙UART芯片:功能特性與應用詳解 在汽車電子、工業自動化等眾多領域,UART(通用異步收發傳輸器)作為實現數據串行通信的關鍵組件,發揮著至關重要的作用。TI公司推出
    的頭像 發表于 12-23 17:35 ?581次閱讀

    CW32 UART低功耗模式詳解

    在嵌入式系統的設計中,低功耗設計(Low-Power Design)是許多設計人員必須面對的問題,其原因在于嵌入式系統被廣泛應用于便攜式和移動性較強的產品中去,而這些產品不是一直都有充足的電源供應
    發表于 11-12 07:24

    MR30分布式I/O助力物流分揀系統智能化升級

    本文以MR30分布式I/O在某大型電商物流中心分揀系統的應用為,詳細闡述其在合流、分揀、分流、分運全流程中的模塊化應用方案。
    的頭像 發表于 10-31 10:58 ?1044次閱讀
    <b class='flag-5'>MR</b>30分布式I/O助力物流分揀系統智能化升級

    基于開源鴻蒙的圖片編輯開發(2)

    本期內容介紹基于開源鴻蒙在RK3568上開發圖片編輯的全流程,分為上篇和下篇,本篇為下篇,主要介紹標記、保存圖片功能。
    的頭像 發表于 10-31 09:19 ?3212次閱讀
    基于開源鴻蒙的圖片編輯開發<b class='flag-5'>樣</b><b class='flag-5'>例</b>(2)

    基于開源鴻蒙的圖片編輯開發(1)

    本期內容介紹基于開源鴻蒙在RK3568上開發圖片編輯的全流程,分為上篇和下篇,本篇為上篇,主要介紹添加相冊圖片、編譯圖片功能。
    的頭像 發表于 10-31 09:16 ?3069次閱讀
    基于開源鴻蒙的圖片編輯開發<b class='flag-5'>樣</b><b class='flag-5'>例</b>(1)

    新潔能NCE65TF099:高頻開關性能如何賦能不同產品應用

    在當今快速發展的電子技術領域,高頻開關性能已成為衡量功率器件性能的關鍵指標之一。新潔能憑借其卓越的高頻開關性能,正在為各種產品應用帶來前所未有的賦能與變革。本文將深入探討新潔能NCE65TF099
    的頭像 發表于 10-20 16:21 ?825次閱讀
    新潔能NCE65TF099:高頻開關性能如何賦能不同<b class='flag-5'>產品應用</b>?

    MR30分布式I/O模塊在化工行業的應用

    氧化鋁等化工行業實現穩定生產。本期案例使用的MR30系列分布式I/O產品MR30-FBC-PN、MR30-16DI、MR30-16DO、
    的頭像 發表于 09-05 11:30 ?625次閱讀

    基于開源鴻蒙的AVPlayer視頻播控開發

    在開源鴻蒙生態建設中,多媒體能力是構建豐富用戶體驗的核心要素。本開發基于AVPlayer實現,AvPlayer支持流媒體和本地資源解析、媒體資源解封裝、視頻解碼和渲染功能,適用于對媒體資源進行端
    的頭像 發表于 08-21 10:22 ?2824次閱讀
    基于開源鴻蒙的AVPlayer視頻播控開發<b class='flag-5'>樣</b><b class='flag-5'>例</b>

    RISC-V和ARM有何區別?

    在微處理器架構領域,ARM與RISC-V是兩個備受關注的體系。ZLG致遠電子在推出ARM核心版后,又推出了基于RISC-V的MR6450核心版,這引發了人們對這兩種架構差異的深入探討。ARM
    的頭像 發表于 06-24 11:38 ?2027次閱讀
    RISC-V和ARM有何區別?

    基于瑞薩電子RA8T2 sensorless方案的工程 可對電流環進行TCM化設置

    基于瑞薩電子RA8T2 sensorless方案的工程 可對電流環進行TCM化設置
    的頭像 發表于 06-04 18:29 ?1112次閱讀

    全志科技機器人專用芯片MR527與MR813特性概述

    能力和豐富的傳感器接口,支持GPIO、PCIe、SDIO、USB、SPI、TWI、UART、GPADC、LRADC、PWM等常用接口。適用于掃地機、割草機、服務機器人、四足機器人等產品形態。 產品特點
    的頭像 發表于 04-24 14:58 ?3831次閱讀
    全志科技機器人專用芯片<b class='flag-5'>MR</b>527與<b class='flag-5'>MR</b>813特性概述

    湖南銀河電氣有限公司產品應用案例

    湖南銀河電氣有限公司產品應用案例
    發表于 04-23 11:21 ?0次下載