情況描述:需要通過592的3個串口和多個設(shè)備通訊,其中一個串口是和成品模組通訊,移植模組端的通訊文件到592的工程中,因為模組端的文件有較多宏定義和592庫函數(shù)中的宏定義沖突,所以沒有調(diào)用串口單字節(jié)發(fā)送庫函數(shù)UART2_SendByte(val);而是直接操作寄存器(*((volatile unsigned char? *)0x40003808)) = val;進行單字節(jié)的發(fā)送。
移植后測試,發(fā)現(xiàn)UART2單字節(jié)發(fā)送會不穩(wěn)定。目前根據(jù)手冊加了一條語句while(R8_UART2_TFC != 0); 之后數(shù)據(jù)就穩(wěn)定了。
請問如果不加這個while有什么辦法能確保數(shù)據(jù)發(fā)送的穩(wěn)定
如果必須要加這個while? ?會不會對我其他串口中斷產(chǎn)生影響?其他兩路串口也在不停的收發(fā)數(shù)據(jù)!
查看: 56
回復(fù): 1
ch592x的單字節(jié)發(fā)送直接操作寄存器的問題
熱門產(chǎn)品 :
CH397: 高集成度、低功耗USB網(wǎng)卡芯片
每個串口的發(fā)送FIFO都是最大8字節(jié)。代碼里按字節(jié)發(fā),只能填慢點,填快了會覆蓋還沒來得及發(fā)出的數(shù)據(jù)。
或者可以用中斷方式發(fā)出,在FIFO空/使能發(fā)送中斷時,會觸發(fā)UART發(fā)送中斷。
請勿發(fā)布廣告和違法內(nèi)容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯(lián)系方式,以便更好更快服務(wù)您
只有登錄才能回復(fù),可以選擇微信賬號登錄