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

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

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

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

CW32L083的UART單線半雙工模式介紹

jf_pJlTbmA9 ? 來源:武漢芯源半導(dǎo)體 ? 作者:武漢芯源半導(dǎo)體 ? 2023-10-24 17:49 ? 次閱讀

一、簡(jiǎn)介

半雙工即Half duplex Communication,是指在通信過程的任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但同時(shí)只有一個(gè)方向上的傳輸存在。由于這種方式要頻繁變換信道方向,故效率低,但可以節(jié)約傳輸線路。半雙工方式適用于終端與終端之間的會(huì)話式通信。

二、實(shí)際操作(以CW32L083為例)

設(shè)置 UARTx_CR2.SIGNAL 為 1 使 UART 工作于單線半雙工工作模式。在該模式下,使用 UARTx_TXD 引腳進(jìn)行數(shù)據(jù)的發(fā)送和接收,不占用 UARTx_RXD 引腳(UARTx_RXD 可作通用 IO 使用)。寫數(shù)據(jù)到 UARTx_TDR 寄存器后,UARTx_TXD 引腳立即進(jìn)入發(fā)送狀態(tài),輸出 UARTx_TDR 寄存器中的數(shù)據(jù)。數(shù)據(jù) 發(fā)送完成后,UARTx_TXD 引腳恢復(fù)到常態(tài)的接收狀態(tài)。沒有發(fā)送數(shù)據(jù)時(shí),UARTx_TXD 引腳處于接收狀態(tài),數(shù)據(jù)接收完成后,接收完成標(biāo)志位 UARTx_ISR.RC 會(huì)被硬件置 位,此時(shí)應(yīng)盡快讀取 UARTx_RDR 寄存器,并清除 UARTx_ISR.RC 標(biāo)志位。

wKgZomUDxzaAEMaEAAB2fxGkwrI184.png

UART工作在單線半雙工模式時(shí),UARTx_TXD引腳需要配置為開漏輸出。另外用戶應(yīng)采取適當(dāng)?shù)膽?yīng)用層保護(hù)機(jī)制,以確保不會(huì)出現(xiàn)多主機(jī)同時(shí)向總線發(fā)送數(shù)據(jù)。

三、UART單線半雙工通信示例

硬件采用CW32L083VxTx StartKit單板,用杜邦線連接PA08和PA06引腳。

UARTy查詢方式發(fā)送TxBuffer1緩沖區(qū)中的數(shù)據(jù),UARTz查詢方式接收數(shù)據(jù),并存儲(chǔ)到RxBuffer2緩沖區(qū)。

UARTz查詢方式發(fā)送TxBuffer2緩沖區(qū)中的數(shù)據(jù),UARTy查詢方式接收數(shù)據(jù),并存儲(chǔ)到RxBuffer1緩沖區(qū)。

比較TxBuffer1和RxBuffer2、TxBuffer2和RxBuffer1,如果數(shù)據(jù)一致,則LED1亮,否則LED2亮。

1、配置RCC

voidRCC_Configuration(void)
{
RCC_HSI_Enable(RCC_HSIOSC_DIV6);//SYSCLK=HSI=8MHz=HCLK=PCLK
RCC_AHBPeriphClk_Enable(UARTy_GPIO_CLK|UARTz_GPIO_CLK|
RCC_AHB_PERIPH_GPIOC,ENABLE);//外設(shè)時(shí)鐘使能
UARTy_APBClkENx(UARTy_CLK,ENABLE);
UARTz_APBClkENx(UARTz_CLK,ENABLE);
}

2、配置GPIO

voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
UARTy_AFTX;//UARTTX復(fù)用
UARTz_AFTX;U
ARTy_TXPUR;//UARTTXPUR
UARTz_TXPUR;
GPIO_InitStructure.Pins=UARTy_TxPin;
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_OD;//開漏輸出
GPIO_Init(UARTy_GPIO, GPIO_InitStructure);
GPIO_InitStructure.Pins=UARTz_TxPin;
GPIO_Init(UARTz_GPIO, GPIO_InitStructure);

GPIO_InitStructure.Pins=GPIO_PIN_3|GPIO_PIN_2;//PC3LED1/PC2LED2
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOC, GPIO_InitStructure);P
C03_SETLOW();//LED滅
PC02_SETLOW();
}

3、配置UART

voidUART_Configuration(void)
{
UART_InitTypeDefUART_InitStructure={0};

UART_InitStructure.UART_BaudRate=UARTyz_BaudRate;//波特率
UART_InitStructure.UART_Over=UART_Over_16;//采樣方式
UART_InitStructure.UART_Source=UART_Source_PCLK;//傳輸時(shí)鐘源
UCLKUART_InitStructure.UART_UclkFreq=UARTyz_UclkFreq;//傳輸時(shí)鐘UCLK頻率
UART_InitStructure.UART_StartBit=UART_StartBit_FE;//起始位判定方式
UART_InitStructure.UART_StopBits=UART_StopBits_1;//停止位長度
UART_InitStructure.UART_Parity=UART_Parity_No;//校驗(yàn)方式
UART_InitStructure.UART_HardwareFlowControl=UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode=UART_Mode_Rx|UART_Mode_Tx;//發(fā)送/接收使能
UART_Init(UARTy, UART_InitStructure);
UART_Init(UARTz, UART_InitStructure);
}

4、定義變量

//UARTy
#defineUARTyCW_UART1
#defineUARTy_CLKRCC_APB2_PERIPH_UART1
#defineUARTy_APBClkENxRCC_APBPeriphClk_Enable2
#defineUARTy_GPIO_CLKRCC_AHB_PERIPH_GPIOA
#defineUARTy_GPIOCW_GPIOA
#defineUARTy_TxPinGPIO_PIN_8
#defineUARTy_AFTXPA08_AFx_UART1TXD()
#defineUARTy_TXPURPA08_PUR_ENABLE();

//UARTz
#defineUARTzCW_UART2
#defineUARTz_CLKRCC_APB1_PERIPH_UART2
#defineUARTz_APBClkENxRCC_APBPeriphClk_Enable1
#defineUARTz_GPIO_CLKRCC_AHB_PERIPH_GPIOA
#defineUARTz_GPIOCW_GPIOA
#defineUARTz_TxPinGPIO_PIN_6
#defineUARTz_AFTXPA06_AFx_UART2TXD()
#defineUARTz_TXPURPA06_PUR_ENABLE()
#defineUARTyz_BaudRate9600
#defineUARTyz_UclkFreq8000000
#defineTxBufferSize1(ARRAY_SZ(TxBuffer1)-1)
#defineTxBufferSize2(ARRAY_SZ(TxBuffer2)-1)
typedefenum{FAILED=0,PASSED=!FAILED}TestStatus;
TestStatusBuffercmp(uint8_t*pBuffer1,uint8_t*pBuffer2,uint16_tBufferLength);
uint8_tTxBuffer1[]="rnCW32L083UARTHalfDuplex:UARTy->UARTzrn";
uint8_tTxBuffer2[]="rnCW32L083UARTHalfDuplex:UARTz->UARTyrn";
uint8_tRxBuffer1[TxBufferSize2];uint8_tRxBuffer2[TxBufferSize1];
uint32_tNbrOfDataToRead1=TxBufferSize2;
uint32_tNbrOfDataToRead2=TxBufferSize1;
uint8_tTxCounter1=0,RxCounter1=0;
uint8_tTxCounter2=0,RxCounter2=0;
volatileTestStatusTransferStatus1=FAILED,TransferStatus2=FAILED;

5、主程序

int32_tmain(void)
{
RCC_Configuration();//配置RCC
GPIO_Configuration();//配置GPIO
UART_Configuration();//配置UART
UART_HalfDuplexCmd(UARTy,ENABLE);//單線半雙工UARTy
UART_HalfDuplexCmd(UARTz,ENABLE);//單線半雙工UARTz
while(NbrOfDataToRead2--)//UARTy->UARTz
{
//UARTy發(fā)送一個(gè)字節(jié)數(shù)據(jù)
UART_SendData_8bit(UARTy,TxBuffer1[TxCounter1++]);
while(UART_GetFlagStatus(UARTy,UART_FLAG_TXE)==RESET);
//UARTz等待RC
while(UART_GetFlagStatus(UARTz,UART_FLAG_RC)==RESET);
UART_ClearFlag(UARTz,UART_FLAG_RC);
RxBuffer2[RxCounter2++]=UART_ReceiveData_8bit(UARTz);
}
while(NbrOfDataToRead1--)//UARTz->UARTy
{
//UARTz發(fā)送一個(gè)字節(jié)數(shù)據(jù)
UART_SendData_8bit(UARTz,TxBuffer2[TxCounter2++]);
while(UART_GetFlagStatus(UARTz,UART_FLAG_TXE)==RESET);
//UARTy等待RC
while(UART_GetFlagStatus(UARTy,UART_FLAG_RC)==RESET);
UART_ClearFlag(UARTy,UART_FLAG_RC);
RxBuffer1[RxCounter1++]=UART_ReceiveData_8bit(UARTy);
}
//檢查收發(fā)數(shù)據(jù)一致性
TransferStatus1=Buffercmp(TxBuffer1,RxBuffer2,TxBufferSize1);
TransferStatus2=Buffercmp(TxBuffer2,RxBuffer1,TxBufferSize2);
if(TransferStatus1==PASSED  TransferStatus2==PASSED)//PASSED
{
//LED1亮
PC03_SETHIGH();
}
else//FAILED
{
PC02_SETHIGH();//LED2亮
}
while(1)
{
}
}

6、測(cè)試結(jié)果:UART半雙工通信方式工作正常, LED1亮。

來源:武漢芯源半導(dǎo)體

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    13

    瀏覽量

    9191
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1270

    瀏覽量

    103356
  • 單線
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    9054
收藏 人收藏

    評(píng)論

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

    武漢芯源半導(dǎo)體CW32L010在兩輪車儀表的應(yīng)用介紹

    介紹的兩輪車儀表方案是無錫梓軒電子基于武漢芯源半導(dǎo)體 CW32L010F8P6開發(fā),適用于小規(guī)格電動(dòng)車儀表方案,實(shí)現(xiàn)車輛速度、累計(jì)里程、單次里程、模式狀態(tài)、故障狀態(tài)顯示等功能。 電動(dòng)車儀表盤能夠及時(shí)
    發(fā)表于 05-13 14:06

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

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

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

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

    SN65HVD3083EDGSR半雙工時(shí)怎么接線?

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

    請(qǐng)問可以關(guān)閉FPD-LINKIII的全雙工模式,只實(shí)現(xiàn)data stream的傳輸嗎?

    為了測(cè)試 DS90UB903Q的tJIND&tJINR參數(shù),需要將FPD-LINKIII上的控制信號(hào)去掉。如果不去掉,ROUT接口的波形是控制信號(hào)和數(shù)據(jù)信號(hào)的疊加。 請(qǐng)問可以關(guān)閉FPD-LINKIII的全雙工模式,只實(shí)現(xiàn)data stream的傳輸嗎?
    發(fā)表于 12-26 06:26

    CW32L010demo

    雙工、同步半雙工單線半雙工模式,支持硬件數(shù)據(jù)流控和多機(jī)通信,還支持 LIN(局域互連網(wǎng)絡(luò));可編程數(shù)據(jù)幀結(jié)構(gòu),可以通過小數(shù)波特率發(fā)生器提供寬范圍的波特率選擇。內(nèi)置定時(shí)器模塊,支持等
    發(fā)表于 12-25 17:41

    方案介紹|CW32L010安全低功耗MCU:驅(qū)動(dòng)高速風(fēng)筒新力量

    芯源半導(dǎo)體CW32L010系列MCU可支持低成本、高性能、低功耗、高度集成的高速風(fēng)筒方案,以滿足市場(chǎng)對(duì)高效、安全、智能的高速風(fēng)筒需求。 本文將介紹武漢芯源半導(dǎo)體CW32L010系列單片機(jī)在高速風(fēng)筒
    發(fā)表于 12-10 09:57

    CW32L010學(xué)習(xí)筆記

    記錄CW32L010學(xué)習(xí)過程
    的頭像 發(fā)表于 11-15 17:40 ?3047次閱讀
    <b class='flag-5'>CW32L</b>010學(xué)習(xí)筆記

    以太網(wǎng)端口雙工模式是什么意思

    以太網(wǎng)端口雙工模式是指以太網(wǎng)端口在數(shù)據(jù)傳輸過程中,能夠同時(shí)發(fā)送和接收數(shù)據(jù)的能力或方式。雙工模式對(duì)于網(wǎng)絡(luò)性能和數(shù)據(jù)傳輸效率具有重要影響。以下是關(guān)于以太網(wǎng)端口雙工模式的詳細(xì)介紹,包括其定義
    的頭像 發(fā)表于 10-08 10:14 ?2277次閱讀

    ISOx5隔離式3.3V半雙工和全雙工RS-485收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ISOx5隔離式3.3V半雙工和全雙工RS-485收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-16 11:29 ?1次下載
    ISOx5隔離式3.3V<b class='flag-5'>半雙工</b>和全<b class='flag-5'>雙工</b>RS-485收發(fā)器數(shù)據(jù)表

    ISO308x隔離式5V全雙工半雙工RS-485收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ISO308x隔離式5V全雙工半雙工RS-485收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-15 09:38 ?0次下載
    ISO308x隔離式5V全<b class='flag-5'>雙工</b>和<b class='flag-5'>半雙工</b>RS-485收發(fā)器數(shù)據(jù)表

    單工、半雙工和全雙工傳輸模式的區(qū)別

    傳輸模式主要分為單工(Simplex)、半雙工(Half-Duplex)和全雙工(Full-Duplex)。這三種模式在數(shù)據(jù)傳輸能力、通信效率和應(yīng)用場(chǎng)景等方面存在顯著差異。
    的頭像 發(fā)表于 08-07 14:32 ?2295次閱讀

    esp32-s3全雙工需要兩個(gè)iis組合,這樣全雙工模式下兩個(gè)iis使用的引腳是否可以配置成一樣呢?

    api參考說單個(gè)iis只能半雙工,全雙工需要兩個(gè)iis組合,這樣全雙工模式下兩個(gè)iis使用的引腳是否可以配置成一樣呢? 另lcd外設(shè)會(huì)占用iis么
    發(fā)表于 06-19 07:58

    esp32 wroom 32d是半雙工還是全雙工的?

    我的疑問有幾個(gè): 1. esp32 wroom 32d是半雙工還是全雙工的? 2. 鏈路層在狀態(tài)機(jī)切換的時(shí)候,比如在廣播態(tài)發(fā)廣播包的時(shí)候,一個(gè)廣播事件還沒結(jié)束,狀態(tài)機(jī)能切換到掃描態(tài)嗎? 3. 一個(gè)
    發(fā)表于 06-18 06:15

    雙工半雙工技術(shù)解析

    隨著信息技術(shù)的迅猛發(fā)展,通信系統(tǒng)的性能要求日益提高。在數(shù)據(jù)傳輸中,雙工模式的選擇對(duì)于提高系統(tǒng)效率、降低通信延遲具有重要意義。 一、全雙工模式雙工模式允許數(shù)據(jù)在通信鏈路的兩個(gè)方向上同時(shí)進(jìn)行傳輸,即
    的頭像 發(fā)表于 06-16 10:18 ?1179次閱讀
    主站蜘蛛池模板: 国产女在线 | 在线天堂bt中文www在线 | 欧美成网站 | 国产精品欧美一区二区三区 | 亚洲一区二区三区麻豆 | 亚洲 欧洲 另类 综合 自拍 | 亚洲综合涩 | 成人a毛片免费全部播放 | 狠狠干网址 | 人人添 | 亚洲国产精品婷婷久久久久 | 狠狠色狠狠色 | 天天躁夜夜躁 | 狠狠干夜夜草 | 欧美男女交性过程视频 | 男啪女色黄无遮挡免费观看 | 亚洲九九香蕉 | 她也啪97在线视频 | 欧美一级一一特黄 | 欧美三级视频在线播放 | 亚洲专区一区 | 欧美xxx另类| 日韩欧美一级 | 一区二区三区四区视频在线观看 | 久久e| 国产美女一级高清免费观看 | 黑人黑粗硬视频 | 亚洲大香伊人蕉在人依线 | 扛着高跟鞋丝袜腿呻吟视频 | 亚洲日本视频 | 97精品久久天干天天蜜 | 日本午夜片成年www 日本午夜三级 | 色综合图片二区150p | 夜夜草天天干 | 久久综合久久久久 | 亚洲 自拍 欧美 综合 | 四虎在线播放免费永久视频 | 中文字幕一区二区三区四区五区人 | 天天摸夜夜添狠狠添2018 | 亚洲人成伊人成综合网久久 | 中国女人a毛片免费全部播放 |