chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-02-18 16:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在之前的微課堂中和大家分享過靈動(dòng)MM32系列MCUUART通信實(shí)例,在此實(shí)例的基礎(chǔ)上我們?cè)黾覷ART 9bit通信功能。UART 9bit通信的作用是第9bit用于標(biāo)識(shí)是地址或數(shù)據(jù),第9bit 為1標(biāo)識(shí)是從機(jī)地址,為0標(biāo)識(shí)是數(shù)據(jù),此外UART通信的第9bit也可作為數(shù)據(jù)的同步幀位使用。

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

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

一、與UART 9bit通信相關(guān)的寄存器

pIYBAGAH2oKAGZoYAAE7VxWBs8w690.png

圖1

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

Bit11

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

1:使能同步幀第9bit發(fā)送。

庫函數(shù)設(shè)置:

UART_Enable9bit(UART1, ENABLE)

0:禁止同步幀第9bit發(fā)送。

庫函數(shù)設(shè)置:

UART_Enable9bit(UART1, DISABLE)

Bit10

B8TOG(rw,reset:0x00)UART同步幀發(fā)送第9bit自動(dòng)翻轉(zhuǎn)控制位。

1:使能第9bit自動(dòng)翻轉(zhuǎn)。

庫函數(shù)設(shè)置:

UART_Set9bitAutomaticToggle(UART1, ENABLE)

0:禁止第9bit自動(dòng)翻轉(zhuǎn)。

庫函數(shù)設(shè)置:

UART_Set9bitAutomaticToggle(UART1, DISABLE)

注:在 B8TXD 和 B8POL 的值相同時(shí),在配置完寄存器后傳輸?shù)牡诙€(gè)數(shù)據(jù)開始翻轉(zhuǎn),第一個(gè)數(shù)據(jù)默認(rèn)為地址位。

Bit8

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

1:發(fā)送同步幀第9bit為高電平。

庫函數(shù)設(shè)置:

UART_Set9bitLevel(UART1, ENABLE)

0:發(fā)送同步幀第9bit為低電平。

庫函數(shù)設(shè)置:

UART_Set9bitLevel(UART1, DISABLE)

二、程序配置

初始化MM32F013x UART1 9bit通信

從官網(wǎng)下載MM32F013x例程,以MM32F0133C7P的UART1通信為例,增加與UART 9bit通信相關(guān)的寄存器位的初始化,這里以庫函數(shù)方式給出,增加的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中斷函數(shù)

MM32F013x UART1中斷服務(wù)函數(shù),同時(shí)將收到的數(shù)據(jù)發(fā)送出去,代碼如下所示:

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發(fā)送函數(shù)

使用之前工程的MM32F0133C7P UART1發(fā)送函數(shù),代碼如下所示:

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

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

MM32F013x UART1 9bit通信功能演示

在main函數(shù)中調(diào)用SysTick和UART1 9bit通信初始化函數(shù),代碼如下所示:

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通信發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的波形:

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

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

轉(zhuǎn)自:靈動(dòng)MM32MCU
審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1304

    瀏覽量

    106062
  • 靈動(dòng)微電子
    +關(guān)注

    關(guān)注

    7

    文章

    135

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    UART的缺點(diǎn)介紹

    同步要求: UART 的異步特性需要將接收器和發(fā)送器預(yù)設(shè)為相同的波特率,以便正確傳輸數(shù)據(jù)。在數(shù)據(jù)速率不斷變化的情況下或設(shè)備以不同時(shí)鐘速度運(yùn)行時(shí),此要求可能不切實(shí)際。在這種情況下,可能需要額外的措施
    發(fā)表于 11-27 06:36

    UART的優(yōu)點(diǎn)介紹

    基于其內(nèi)部時(shí)鐘運(yùn)行,使得 UART 非常適合設(shè)備具有不同時(shí)鐘源或時(shí)鐘同步具有挑戰(zhàn)性的應(yīng)用。 支持更長的數(shù)據(jù)UART 支持具有 5 至 9
    發(fā)表于 11-27 06:29

    CW32L010的串口輸出功能

    今天和大家分享一下CW32L010的串口輸出功能: CW32L010 內(nèi)部集成2個(gè)通用異步收發(fā)器(UART),支持異步全雙工、同步半雙工和單線半雙工模式,支持硬件數(shù)據(jù)流控和多機(jī)通信,還支持 LIN
    發(fā)表于 11-26 06:04

    UART 串口通信還能玩出什么花樣?

    還記得打印機(jī)、鼠標(biāo)和調(diào)制解調(diào)器曾經(jīng)使用粗線和笨重連接器嗎?那些必須擰進(jìn)電腦里的連接器?這些設(shè)備很可能使用UART與電腦通信。雖然USB幾乎完全取代了那些老式的線纜和連接器,但UART絕非過時(shí)之物。你
    的頭像 發(fā)表于 11-24 19:05 ?140次閱讀
    <b class='flag-5'>UART</b> 串口<b class='flag-5'>通信</b>還能玩出什么花樣?

    并行與串行的基本通信方式

    、異步串行通信方式:指通信的接收與發(fā)送設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。其特點(diǎn)是:不要求發(fā)送雙方時(shí)鐘嚴(yán)格一致,容易實(shí)現(xiàn),設(shè)備開銷小,但每個(gè)字符要附加2~3位,用于起始位、校驗(yàn)位、停止位,各
    發(fā)表于 11-24 06:36

    RVMCU課堂「13」: 手把手教你玩轉(zhuǎn)RVSTAR—UART通信

    小實(shí)驗(yàn),簡單講解UART串口通信的應(yīng)用方法。 系統(tǒng)環(huán)境 Windows 10-64bit 軟件平臺(tái) [size=14.6667px]NucleiStudio IDE 202102版或
    發(fā)表于 10-31 07:02

    請(qǐng)問rt_thread的uart下如何支持9位數(shù)據(jù)的發(fā)送和接收?

    目前項(xiàng)目中有使用UART進(jìn)行數(shù)據(jù)的發(fā)送和接收,但是此部分UART比較特殊,其使用9bit進(jìn)行數(shù)據(jù)傳輸,其中第9位用于指示當(dāng)前是地位還是數(shù)據(jù),想請(qǐng)教下各位,針對(duì)這種需求,目前的rt-th
    發(fā)表于 09-28 07:56

    嵌入式接口通識(shí)知識(shí)之UART接口

    速度較慢。這里簡單對(duì)比理解一下全雙工和半雙工、串行和并行、異步和同步幾種通信方式的區(qū)別:1.全雙工:指通信雙方可以同時(shí)進(jìn)行發(fā)送和接收數(shù)據(jù),而且可以同時(shí)進(jìn)行這兩個(gè)操作而不會(huì)互相干擾。通常
    發(fā)表于 08-14 14:42

    串行通信和并行通信的區(qū)別是什么

    bit by bit)在單條傳輸線上發(fā)送和接收。例如,8位數(shù)據(jù)“01001001”會(huì)分成8個(gè)時(shí)鐘周期依次傳輸。 結(jié)構(gòu) :異步串行通信(如UART
    的頭像 發(fā)表于 07-22 10:55 ?1688次閱讀

    全面了解串行通信

    、核心概念 數(shù)據(jù)傳輸方式 : 串行通信 :數(shù)據(jù)在單條線路上依次傳輸,每個(gè)時(shí)鐘周期傳輸1位(0或1)。 并行通信 :數(shù)據(jù)通過多條線路同時(shí)傳輸多位(如8位、16位),適合短距離高速傳輸。 關(guān)鍵術(shù)語 : 位(
    的頭像 發(fā)表于 07-19 14:13 ?1110次閱讀

    【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】UART 串口通信

    方式,可以實(shí)現(xiàn)高速數(shù)據(jù)通信。 雖然USART既可以同步又可以異步,但是常見的最常用的就是使用功能的異步功能,如果作為異步通信就是UART(U
    發(fā)表于 07-08 00:02

    芯知識(shí)|廣州唯創(chuàng)電子語音芯片UART通信協(xié)議解析:發(fā)碼長度與校驗(yàn)碼計(jì)算

    一、UART通信協(xié)議概述UART(通用異步收發(fā)器)是一種廣泛應(yīng)用于嵌入式系統(tǒng)的串行通信協(xié)議,其核心特點(diǎn)為無需時(shí)鐘同步,通過起始位、數(shù)據(jù)位、校
    的頭像 發(fā)表于 05-27 08:48 ?505次閱讀
    芯知識(shí)|廣州唯創(chuàng)電子語音芯片<b class='flag-5'>UART</b><b class='flag-5'>通信</b>協(xié)議解析:發(fā)碼長度與校驗(yàn)碼計(jì)算

    【RA-Eco-RA4M2開發(fā)板評(píng)測】RA-Eco-RA4M2 串口通信

    就是有效數(shù)據(jù),而異步通訊中會(huì)包含有的各種標(biāo)識(shí)符,所以同步通訊的效率更高,但是同步通訊雙方的時(shí)鐘允許誤差較小,而異步通訊雙方的時(shí)鐘允許誤差較大。 從上面的介紹可以看出,SCI以
    發(fā)表于 04-27 23:23

    《DNESP32S3使用指南-IDF版_V1.6》第十三章 UART實(shí)驗(yàn)

    第十三章 UART實(shí)驗(yàn) 本章將介紹使用串口進(jìn)行數(shù)據(jù)的收發(fā)操作,具體實(shí)現(xiàn)ESP32-S3與上位機(jī)軟件的數(shù)據(jù)通信,ESP32-S3將接受自上位機(jī)軟件的數(shù)據(jù)原原本本地發(fā)送回給上位機(jī)軟件。通過本章的學(xué)習(xí)
    發(fā)表于 12-16 09:30

    【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】UART串口通信-收發(fā)回顯

    一.串口介紹 USART是全雙工通用同步/異步收發(fā)器,是一種串行的設(shè)備。在嵌入式開發(fā)設(shè)計(jì)中經(jīng)常被使用到,廣泛的被應(yīng)用于主機(jī)與外圍設(shè)備的通信交互中,應(yīng)用相當(dāng)?shù)膹V泛。 UART和 U
    發(fā)表于 12-15 17:32