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

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

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

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

在MM32F013x上實現(xiàn)UART單線半雙工的功能應(yīng)用

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

掃碼添加小助手

加入工程師交流群

本文將介紹在MM32F013x上實現(xiàn)UART單線半雙工的功能應(yīng)用。

UART單線半雙工簡介

在使用數(shù)字舵機通訊時所用到的通信方式為UART通信,但舵機只有三根接線,除去VCC和GND,只有一條通信線,也就是說要實現(xiàn)雙向通信,只能使用單線半雙工模式。在單線半雙工模式下,TX 和 RX 引腳在芯片內(nèi)部互連。

01 配置流程

單線半雙工模式是通過設(shè)置UART_SCR寄存器的HDSEL位,在這個模式里UART_SCR 寄存器的SCEN位必須保持清零狀態(tài)。

在單線半雙工模式下,TX和RX引腳在芯片內(nèi)部互聯(lián),使用控制位”HALF DUPLEX SEL”(UART_SCR 中的 HDSEL 位) 選擇半雙工和全雙工通信。

注意

當(dāng)選擇單線半雙工模式時RX 不再被使用,當(dāng)有數(shù)據(jù)需要發(fā)送的時候IO才會被UART驅(qū)動,沒有數(shù)據(jù)傳輸時TX總是被釋放,所以使用單線半雙工需要外部加上拉。

除此之外通訊上和正常的UART模式類似。由于是單線半雙工同一時刻總線上只能有一個節(jié)點發(fā)送,所以需要軟件協(xié)議層去管理線上沖突防止多個設(shè)備同時發(fā)送,當(dāng) TXEN 位被設(shè)置時,只要數(shù)據(jù)一寫到數(shù)據(jù)寄存器上,發(fā)送就繼續(xù)。

02 UART_SCR寄存器描述

配置UART_SCR 的HDSEL為1

UART_SCR 寄存器的SCEN位清零

初始化UART1

從官網(wǎng)上下載MM32F013x例程,里面有UART普通模式的配置,在這個基礎(chǔ)上我們直接調(diào)用UART_HalfDuplexCmd(UART1,ENABLE);函數(shù)接口將串口配置成單線半雙工模式,然后IO口初始化只需要配置PA9 TX即可,如下:

void UART1_NVIC_Init(u32 baudrate

{

UART_InitTypeDef UART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_UART1, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);

//UART1 NVIC

NVIC_InitStructure.NVIC_IRQChannel = UART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

//Baud rate

UART_StructInit(&UART_InitStructure);

UART_InitStructure.BaudRate = baudrate;

//The word length is in 8-bit data format.

UART_InitStructure.WordLength = UART_WordLength_8b;

UART_InitStructure.StopBits = UART_StopBits_1;

//No even check bit.

UART_InitStructure.Parity = UART_Parity_No;

//No hardware data flow control.

UART_InitStructure.HWFlowControl = UART_HWFlowControl_None;

UART_InitStructure.Mode = UART_Mode_Rx | UART_Mode_Tx;

UART_Init(UART1, &UART_InitStructure);

UART_HalfDuplexCmd(UART1,ENABLE); //Half Duplex Enable

UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);

UART_Cmd(UART1, ENABLE);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);

//UART1_TX GPIOA.9

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);

}

功能驗證測試

UART單線半雙工功能測試我們現(xiàn)在拿兩個MM32F0133的板子一個做主機一個做從機進(jìn)行單線收發(fā)測試,主機先發(fā)送一包數(shù)據(jù)給從節(jié)點,當(dāng)從節(jié)點收到這包數(shù)據(jù)后再把這包數(shù)據(jù)發(fā)回給主機,然后主機和從機兩個板子PA9短接到一起,外部在加一個4.7K上拉電阻

主機函數(shù)處理:

uint8_t txbuff[10]= {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA};

s32 main(void)

{

CONSOLE_Init(115200);//UART2 printf打印

UART1_NVIC_Init(115200);

printf(“UART Half Duplex TX Test /r/n”);

UART1_Send_Group(txbuff,sizeof(txbuff));

printf(“TX Data: ”);

for(index=0;index

主機UART的中斷服務(wù)函數(shù)里面,將接從機發(fā)送的數(shù)據(jù)存放在Rx_buff里面,當(dāng)收到一包數(shù)據(jù)后通過printf打印到串口,和原始發(fā)送的數(shù)據(jù)進(jìn)行對比。

void UART1_IRQHandler(void)

{

u8 recvbyte;

// Send packet

if (UART_GetITStatus(UART1, UART_IT_TXIEN) != RESET)

{

UART_ClearITPendingBit(UART1, UART_IT_TXIEN);

}

// Recv packet

if (UART_GetITStatus(UART1, UART_ISR_RX) != RESET)

{

UART_ClearITPendingBit(UART1, UART_ISR_RX);

recvbyte = UART_ReceiveData(UART1);

Rx_buff[rx_cnt] = recvbyte;

rx_cnt++;

if(rx_cnt == 10)

{

gUartRxSta = 1;

rx_cnt = 0;

}

}

}

從機函數(shù)處理:

s32 main(void)

{

CONSOLE_Init(115200);//UART2 printf打印

UART1_NVIC_Init(115200);

printf(“UART Half Duplex RX Test/r/n”);

while(1)

{

if(gUartRxSta == 1)//收到一包數(shù)據(jù)

{

gUartRxSta = 0;

UART1_Send_Group(Rx_buff,10);

memset(Rx_buff,0x00,10);

}

}

//return 0;

}

從機UART的中斷服務(wù)函數(shù)里面,將接主機發(fā)送的數(shù)據(jù)存放在Rx_buff里面,當(dāng)收到一包數(shù)據(jù)后通過單線半雙工這個串口發(fā)送回去。

void UART1_IRQHandler(void)

{

u8 recvbyte;

// Send packet

if (UART_GetITStatus(UART1, UART_IT_TXIEN) != RESET)

{

UART_ClearITPendingBit(UART1, UART_IT_TXIEN);

}

// Recv packet

if (UART_GetITStatus(UART1, UART_ISR_RX) != RESET)

{

UART_ClearITPendingBit(UART1, UART_ISR_RX);

recvbyte = UART_ReceiveData(UART1);

Rx_buff[rx_cnt] = recvbyte;

rx_cnt++;

if(rx_cnt == 10)

{

gUartRxSta = 1;

rx_cnt = 0;

}

}

}

觀察測試結(jié)果:

然后我們通過主機UART2 的printf打印可以看到主機TX Data 和從機返回的RX Data數(shù)據(jù)是一樣的。

再看看下圖邏輯分析儀抓取的邏輯波形,可以也可以看到主機發(fā)送的波形和從機返回的波形數(shù)據(jù)是一樣的。

轉(zhuǎn)自:靈動微電子

審核編輯:何安

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

    關(guān)注

    22

    文章

    1286

    瀏覽量

    105518
  • 靈動微電子
    +關(guān)注

    關(guān)注

    7

    文章

    133

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    THVD14x9x系列:高可靠性、內(nèi)置浪涌保護的RS-485收發(fā)器詳解

    Texas Instruments THVD14x9x RS-485收發(fā)器是一款具有集成浪涌保護功能半雙工RS-485收發(fā)器。通過標(biāo)準(zhǔn)8引腳SOIC (D) 封裝中集成瞬態(tài)電壓抑制
    的頭像 發(fā)表于 09-28 10:33 ?258次閱讀
    THVD14<b class='flag-5'>x9x</b>系列:高可靠性、內(nèi)置浪涌保護的RS-485收發(fā)器詳解

    雙工跳線和雙芯跳線的區(qū)別是什么

    雙工跳線和雙芯跳線定義、傳輸模式、結(jié)構(gòu)設(shè)計和應(yīng)用場景存在明顯區(qū)別: 定義與核心功能雙工跳線:基于通信模式分類,強調(diào)數(shù)據(jù)傳輸?shù)碾p向性。
    的頭像 發(fā)表于 09-01 10:23 ?378次閱讀

    廣州唯創(chuàng)電子WT588F(C013)語音芯片:賦能智能玩具的“聲”動未來

    追求寓教于樂的智能玩具時代,豐富的語音交互能力已成為核心競爭力。廣州唯創(chuàng)電子WT588F(C013)語音芯片憑借其卓越的性能與多功能性,正成為打造高互動性、高趣味性智能玩具的“聲”力
    的頭像 發(fā)表于 08-08 08:09 ?411次閱讀
    廣州唯創(chuàng)電子WT588<b class='flag-5'>F</b>(C<b class='flag-5'>013</b>)語音芯片:賦能智能玩具的“聲”動未來

    Texas Instruments THVD1454半雙工RS-485收發(fā)器數(shù)據(jù)手冊

    Texas Instrument THVD1454半雙工RS-485收發(fā)器是一款適用于工業(yè)應(yīng)用的靈活半雙工RS-485收發(fā)器。該器件具有片120Ω 終端電阻和驅(qū)動器輸出壓擺率控制等功能
    的頭像 發(fā)表于 08-04 15:23 ?668次閱讀
    Texas Instruments THVD1454<b class='flag-5'>半雙工</b>RS-485收發(fā)器數(shù)據(jù)手冊

    求助,關(guān)于半雙工模式下的Uart問題求解

    目標(biāo)是 2 個 XMC1404 啟動套件運行半雙工通信。為此使用了DAVE? 。 通信配置為使用 p2.0 的 usic0 通道 0。為了使其工作,我必須重新編程 TX/RX 引
    發(fā)表于 07-30 07:00

    Texas Instruments THVD24x9半雙工RS-485收發(fā)器數(shù)據(jù)手冊

    Texas Instruments THVD24x9半雙工RS-485收發(fā)器通過標(biāo)準(zhǔn)8引腳SOIC和小型10引腳VSON封裝中集成瞬態(tài)電壓抑制器 (TVS) 二極管,實現(xiàn)了集成浪涌保
    的頭像 發(fā)表于 07-23 10:25 ?422次閱讀
    Texas Instruments THVD24<b class='flag-5'>x</b>9<b class='flag-5'>半雙工</b>RS-485收發(fā)器數(shù)據(jù)手冊

    雙工不匹配如何修復(fù)它

    ,確保所有相關(guān)設(shè)備的雙工模式一致,例如都設(shè)置為全雙工半雙工。 啟用自動協(xié)商功能:推薦在所有端口啟用自協(xié)商功能,以便設(shè)備能夠自動匹配最佳的
    的頭像 發(fā)表于 07-02 09:46 ?291次閱讀

    ADM2491E 5 kV信號隔離、高速(16 Mbps)、ESD保護、全/半雙工RS-485收發(fā)器技術(shù)手冊

    ADM2491E是一款隔離的數(shù)據(jù)收發(fā)器,具有±8 kV ESD保護功能,適合多點傳輸線路的高速半雙工或全雙工通信。對于半雙工工作,發(fā)送器輸出與接收器輸入共用相同的傳輸線路。發(fā)送器輸出引
    的頭像 發(fā)表于 06-06 10:50 ?749次閱讀
    ADM2491E 5 kV信號隔離、高速(16 Mbps)、ESD保護、全/<b class='flag-5'>半雙工</b>RS-485收發(fā)器技術(shù)手冊

    帶耦合器的大規(guī)模物聯(lián)網(wǎng)半雙工前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()帶耦合器的大規(guī)模物聯(lián)網(wǎng)半雙工前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有帶耦合器的大規(guī)模物聯(lián)網(wǎng)半雙工前端模塊的引腳圖、接線圖、封裝手冊、中文資料、英文資料,帶耦合器的大規(guī)模物聯(lián)網(wǎng)半雙工前端模塊真值表,帶耦合器的大
    發(fā)表于 05-09 18:35
    帶耦合器的大規(guī)模物聯(lián)網(wǎng)<b class='flag-5'>半雙工</b>前端模塊 skyworksinc

    雙工分軌語音數(shù)據(jù)集:讓AI實現(xiàn)無縫對話

    雙工語音交互是一種允許設(shè)備接收語音的同時并行處理和響應(yīng)的技術(shù)。傳統(tǒng)半雙工模式下,用戶需要說完一句話后等待系統(tǒng)響應(yīng),交互效率低且體驗不自然;而全
    的頭像 發(fā)表于 04-10 09:39 ?453次閱讀
    全<b class='flag-5'>雙工</b>分軌語音數(shù)據(jù)集:讓AI<b class='flag-5'>實現(xiàn)</b>無縫對話

    CKS32F107xx系列USART的特性和功能

    半雙工單線通信,也支持LIN(局部互連網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIRENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實現(xiàn)高速數(shù)據(jù)通信。
    的頭像 發(fā)表于 02-18 16:58 ?926次閱讀

    AN-644:微型轉(zhuǎn)換器使用定時器2進(jìn)行頻率測量(uC013)

    電子發(fā)燒友網(wǎng)站提供《AN-644:微型轉(zhuǎn)換器使用定時器2進(jìn)行頻率測量(uC013).pdf》資料免費下載
    發(fā)表于 01-13 17:31 ?0次下載
    AN-644:<b class='flag-5'>在</b>微型轉(zhuǎn)換器<b class='flag-5'>上</b>使用定時器2進(jìn)行頻率測量(uC<b class='flag-5'>013</b>)

    EE-354:ADSP-BF60x Blackfin處理器的UART增強功能

    電子發(fā)燒友網(wǎng)站提供《EE-354:ADSP-BF60x Blackfin處理器的UART增強功能.pdf》資料免費下載
    發(fā)表于 01-05 09:21 ?0次下載
    EE-354:ADSP-BF60<b class='flag-5'>x</b> Blackfin處理器的<b class='flag-5'>UART</b>增強<b class='flag-5'>功能</b>

    SN65HVD3083EDGSR半雙工時怎么接線?

    請問ti工程師SN65HVD3083EDGSR 這顆芯片半雙工時怎么接線?
    發(fā)表于 01-01 08:12

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

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