色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

Demo介紹UART 9bit通信的同步幀方式

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-18 16:05 ? 次閱讀

在之前的微課堂中和大家分享過靈動MM32系列MCUUART通信實例,在此實例的基礎上我們增加UART 9bit通信功能。UART 9bit通信的作用是第9bit用于標識是地址或數據,第9bit 為1標識是從機地址,為0標識是數據,此外UART通信的第9bit也可作為數據的同步幀位使用。

在雙機通訊中,UART的8bit通信的第九位一般是奇偶校驗位,而多機通訊中,第九位用于標識地址或數據,常用1表示后面的是從機地址,0表示后面的是數據。我們通常希望只有被尋址的接收者才被激活,來接收隨后的數據,這樣就可以減少由未被尋址的接收器的參與帶來的多余的UART服務開銷。未被尋址的設備可啟用其靜默功能置于靜默模式。在靜默模式里,任何接收狀態位都不會被設置,所有接收中斷被禁止。

以MM32F013x系列MCU的UART通信為例,通過一個示例Demo介紹UART 9bit通信的同步幀方式。

一、與UART 9bit通信相關的寄存器

pIYBAGAH2oKAGZoYAAE7VxWBs8w690.png

圖1

如上圖1所示為UART通用控制寄存器UART_CCR,在MM32F013x UM手冊的第489和第490頁有關于該寄存器位的詳細描述。本實例用到的UART通用控制寄存器UART_CCR位說明如下:

Bit11

B8EN(rw, reset:0x00)UART同步幀發送第9bit使能控制位。該位使能后校驗使能PEN不起作用。

1:使能同步幀第9bit發送。

庫函數設置:

UART_Enable9bit(UART1, ENABLE)

0:禁止同步幀第9bit發送。

庫函數設置:

UART_Enable9bit(UART1, DISABLE)

Bit10

B8TOG(rw,reset:0x00)UART同步幀發送第9bit自動翻轉控制位。

1:使能第9bit自動翻轉。

庫函數設置:

UART_Set9bitAutomaticToggle(UART1, ENABLE)

0:禁止第9bit自動翻轉。

庫函數設置:

UART_Set9bitAutomaticToggle(UART1, DISABLE)

注:在 B8TXD 和 B8POL 的值相同時,在配置完寄存器后傳輸的第二個數據開始翻轉,第一個數據默認為地址位。

Bit8

B8TXD(rw,reset:0x00)UART同步幀發送數據第9bit。

1:發送同步幀第9bit為高電平。

庫函數設置:

UART_Set9bitLevel(UART1, ENABLE)

0:發送同步幀第9bit為低電平。

庫函數設置:

UART_Set9bitLevel(UART1, DISABLE)

二、程序配置

初始化MM32F013x UART1 9bit通信

從官網下載MM32F013x例程,以MM32F0133C7P的UART1通信為例,增加與UART 9bit通信相關的寄存器位的初始化,這里以庫函數方式給出,增加的3行代碼如下所示:

//Synchronous frame enable bit UART_CCR Bit11:B8EN
UART_Enable9bit(UART1, ENABLE);
//Synchronous frame transmit UART_CCR Bit8: B8TXD
UART_Set9bitLevel(UART1, DISABLE);
//Synchronous frame auto toggle UART_CCR Bit10:B8TOG
UART_Set9bitAutomaticToggle(UART1, ENABLE);

MM32F0133C7P UART1 9bit通信,初始化代碼如下所示:

void bsp_UART1_9Bit_Init(u32 baudrate)
{
GPIO_InitTypeDef GPIO_InitStructure;
UART_InitTypeDef UART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
UART_StructInit(&UART_InitStructure);

UART_InitStructure.BaudRate = baudrate;
UART_InitStructure.WordLength = UART_WordLength_8b;
UART_InitStructure.StopBits = UART_StopBits_1;

UART_InitStructure.Parity = UART_Parity_No;
UART_InitStructure.HWFlowControl = UART_HWFlowControl_None;
UART_InitStructure.Mode = UART_Mode_Rx | UART_Mode_Tx;
UART_Init(UART1, &UART_InitStructure);

UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);
UART_Enable9bit(UART1, ENABLE);
UART_Set9bitLevel(UART1, DISABLE);
UART_Set9bitAutomaticToggle(UART1, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

UART_Cmd(UART1, ENABLE);
}

1 ● 編寫MM32F013x UART1中斷函數

MM32F013x UART1中斷服務函數,同時將收到的數據發送出去,代碼如下所示:

void UART1_IRQHandler(void)
{
u8 res;

if(UART_GetITStatus(UART1, UART_IT_RXIEN) != RESET)
{
//Receiving interrupts (data received must end at 0x0D 0x0a)
UART_ClearITPendingBit(UART1, UART_IT_RXIEN);

//read receive data.
res = UART_ReceiveData(UART1);

bsp_UART1_Send_Byte(res);
}
}

2 ● 編寫MM32F013x UART1發送函數

使用之前工程的MM32F0133C7P UART1發送函數,代碼如下所示:

void bsp_UART1_Send_Byte(u8 dat)
{
UART_SendData(UART1, dat);

while(!UART_GetFlagStatus(UART1, UART_FLAG_TXEPT));
}

MM32F013x UART1 9bit通信功能演示

在main函數中調用SysTick和UART1 9bit通信初始化函數,代碼如下所示:

s32 main(void)
{
//SysTick init
DELAY_Init();
//UART1 9bit init
bsp_UART1_9Bit_Init(115200);

while(1)
{
bsp_UART1_Send_Byte(0x55);

DELAY_Ms(500);
}
}

編譯工程代碼,然后燒錄軟件到MM32F0133C7P核心板上,用邏輯分析儀抓取UART1 9bit通信發送數據和接收數據的波形:

演示發送數據:
以MM32F0133C7P發送0x55為例,使用邏輯分析儀抓取UART1 9bit通信發送數據的波形如下圖所示。

演示接收數據:
上位機串口助手發送0xAA為例,使用邏輯分析儀抓取UART1 9bit通信收到的數據的波形,觀察箭頭所指第bit9位,如下圖3所示:

轉自:靈動MM32MCU
審核編輯:何安

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

    關注

    22

    文章

    1240

    瀏覽量

    101495
  • 靈動微電子
    +關注

    關注

    7

    文章

    122

    瀏覽量

    19652
收藏 人收藏

    評論

    相關推薦

    通信協議之SPI總線硬件篇

    , 即同步傳輸)。 1、支持半雙工、全雙工通信模式。 2、沒有流控制和應答機制來確認是否接收到數據(UART有校驗或流控制)。 3、沒有一個固定的傳輸速率規定,已有器件SPI輸出速率達到
    的頭像 發表于 11-25 17:56 ?798次閱讀
    <b class='flag-5'>通信</b>協議之SPI總線硬件篇

    通信技術:UART串口通信開源代碼實操!

    今天我們分享的是關于UART串口通信示例,歡迎大家探討
    的頭像 發表于 11-05 11:56 ?3105次閱讀
    <b class='flag-5'>通信</b>技術:<b class='flag-5'>UART</b>串口<b class='flag-5'>通信</b>開源代碼實操!

    tlv320aic23b的寄存器地址為什么是7bit而數據卻是9bit

    請問音頻芯片tlv320aic23b的寄存器地址為什么是7bit 而數據卻是9bit
    發表于 10-31 07:47

    UART通信協議介紹和數據傳輸工作流程

    UART是一種通用串行數據總線,用于異步通信。該總線雙向通信,可實現全雙工傳輸和接收。UART通常用來實現與PC之間數據通信,命令和控制信息
    的頭像 發表于 10-24 14:20 ?835次閱讀
    <b class='flag-5'>UART</b><b class='flag-5'>通信</b>協議<b class='flag-5'>介紹</b>和數據傳輸工作流程

    UART串口通訊協議解析

    的標準信號幅度變換芯片進行搭配,作為連接外部設備的接口。在UART上追加同步方式的序列信號變換電路的產品,被稱為USART(Universal Synchronous Asynchronous
    發表于 09-12 16:01

    簡單認識UART通信協議

    模塊等多種設備之間的數據傳輸。以下是對UART通訊協議的詳細簡述,內容將涵蓋其基本原理、工作方式、配置參數、常見應用以及與其他通信協議的比較。
    的頭像 發表于 07-25 18:07 ?1491次閱讀

    同步通信和異步通信的區別

    在數據通信領域,同步通信和異步通信是兩種基本的通信方式,它們各自具有獨特的特點和適用場景。了解這
    的頭像 發表于 07-25 16:28 ?7863次閱讀

    簡單認識UART串行通信協議

    的數據通信,特別是在嵌入式系統、計算機外設以及微控制器等場景中。本文將對UART串行通信協議進行詳細的介紹,包括其基本原理、工作方式、參數設
    的頭像 發表于 05-27 16:09 ?2178次閱讀

    EtherCAT 數據格式和尋址方式簡介

    EtherCAT是一個高實時性,高速和高效率的工業以太網技術,數據根據自身獨有的數據格式進行可靠傳輸,本文主要針對EtherCAT的數據格式和尋址方式進行簡單描述。EtherCAT的數據
    的頭像 發表于 04-12 08:25 ?985次閱讀
    EtherCAT 數據<b class='flag-5'>幀</b>格式和尋址<b class='flag-5'>方式</b>簡介

    如何采用“狀態機”解析UART數據

    如果一個系統接收上述“不定長度”的協議,將會有一個挑戰--如何高效接收與解析。 為簡化系統設計,我們強烈建議您采用“狀態機”來解析UART數據
    的頭像 發表于 03-25 14:29 ?744次閱讀
    如何采用“狀態機”解析<b class='flag-5'>UART</b>數據<b class='flag-5'>幀</b>

    UART串口通信協議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協議,用于實現串口通信。它是一種簡單的、可靠的、廣泛應用的串口通信
    的頭像 發表于 03-19 17:26 ?1459次閱讀

    常見的UART收發方式

    這種方式適合大多數單片機,只要有中斷就行。使用UART Write發送數據時,數據并不是直接寫入到UART發送器,而是放進了一個環形緩沖區中。
    的頭像 發表于 02-19 16:23 ?916次閱讀

    淺談UART通信的異步通信機制

    波特率表示每秒鐘傳送的碼元符號的個數,它是對符號傳輸速率的一種度量。在UART通信中,波特率用于描述通信速度,其單位是bps(每秒鐘傳輸的bit的數量)。
    發表于 02-19 16:19 ?914次閱讀
    淺談<b class='flag-5'>UART</b><b class='flag-5'>通信</b>的異步<b class='flag-5'>通信</b>機制

    CAN通信協議中有哪幾種類型?CAN通信格式的作用

    CAN通信協議中有四種類型,分別是數據、遠程、錯誤和過載
    的頭像 發表于 01-30 09:18 ?5622次閱讀

    uart與usart區別 usart可以當uart用嗎

    USART實際上包含了UART的功能,并增加了支持同步通信的能力。在大多數微控制器中,UART通常是USART功能的一部分,USART可以配置為UA
    發表于 01-17 15:46 ?1.9w次閱讀
    <b class='flag-5'>uart</b>與usart區別 usart可以當<b class='flag-5'>uart</b>用嗎
    主站蜘蛛池模板: 久久综合伊人 magnet| 国产午夜免费视频片夜色| 嫩草视频在线观看免费| 久久免费精品一区二区| 国产精品色欲AV亚洲三区软件| nu77亚洲综合日韩精品| 国产亚洲日韩另类在线观看| 欧美日韩视频一区二区三区| 欧美色妞AV重囗味视频| 伊人久久大香线蕉综合色啪| 日韩一区二区三区视频在线观看| 黑人 尺寸 强行害怕 痛哭| 产传媒61国产免费| 2018久久视频在线视频观看| 亚洲国产在线视频中文字| 日本枯瘦娇小| 美女隐私黄www视频| 果冻传媒在线看免费高清| 超碰免费视频部落格| 91次元黄色观看| 亚洲一区在线观看视频| 香蕉视频国产精品| 色综合五月激情综合色一区 | a级老头和老太xxxx| 在线观看视频中文字幕| 野花高清在线观看免费3中文| 亚洲.日韩.欧美另类| 色婷婷综合激情中文在线| 秋秋影视午夜福利高清| 欧美派对xxxhdparty| 年轻漂亮的妺妺中文字幕版| 麻豆出品国产AV在线观看| 快播看av| 久久一本岛在免费线观看2020| 精品九九视频| 久久国产加勒比精品无码| 精品无人区麻豆乱码1区2| 护士一级片| 久久久久婷婷国产综合青草 | gay台湾无套男同志xnxⅹ| 99在线免费|