關(guān)于CH582M的串口轉(zhuǎn)發(fā)問題

我想使用CH582M的串口轉(zhuǎn)發(fā)功能,代碼如下:

uint8_t?RxBuff[100];

int?main()
{
????uint8_t?len?=?0;
????uint8_t?keyvalue?=?0;

????SetSysClock(CLK_SOURCE_PLL_80MHz);
????DelayMs(5);


????GPIOA_SetBits(GPIO_Pin_9);
????GPIOA_ModeCfg(GPIO_Pin_8,?GPIO_ModeIN_PU);
????GPIOA_ModeCfg(GPIO_Pin_9,?GPIO_ModeOut_PP_5mA);
????UART1_DefInit();

????while(1)
????{
????????len?=?UART1_RecvString(RxBuff);
????????if?(len?!=?0){
????????????keyvalue?=?RxBuff[2];
????????????UART1_SendString(RxBuff,?len);
????????????UART1_SendByte(keyvalue);
????????}
????}
}

基本的代碼邏輯是,CH582M從串口1收到了數(shù)據(jù)以后,再從串口1轉(zhuǎn)發(fā)出去。

其中CH582M串口1的RX引腳接了是ESP32的串口TX,CH582M的TX引腳接的樹莓派的RX引腳。

ESP32發(fā)送端的buffer如下:

uint8_t?buffer[8]?=?{1,?2,?3,?4,?5,?6,?7,?8};
uint8_t?buffer1[8]?=?{0,?0,?0,?0,?0,?0,?0,?0};

buffer和buffer1間隔100ms發(fā)送。


按照我的理解,由CH582M轉(zhuǎn)發(fā)出去的數(shù)據(jù)應(yīng)該是:

read?from?uart:1?2?3?4?5?6?7?8
read?from?uart:3
read?from?uart:0?0?0?0?0?0?0?0
read?from?uart:0

但是,實際從樹莓派上讀出來的數(shù)據(jù)是:

read?from?uart:1?0?2?0?3?0?4?0?5?0?6?0?7?0?8?0
read?from?uart:0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0


請問,這是怎么回事,或者說我的配置少了些什么?

將貼的代碼里面的這句話中的len打印出來看一下

UART1_SendString(RxBuff,?len);

CH582m串口透傳程序 - JayWell - 博客園 (cnblogs.com)可以參考一下本博客


?while(1)
????{
????????len?=?UART1_RecvString(RxBuff);
????????if?(len?!=?0){
????????????UART1_SendByte(len);
????????}
????}

我將代碼修改后再次打印,輸出如下:

read?from?uart:1?1?1?1?1?1?1?1
read?from?uart:1?1?1?1?1?1?1?1

看起來像是把一次發(fā)送的8個byte,當(dāng)成了8次 1byte接收。


您好,可以參考二樓的博客,利用UART的中斷超時來接收UART的一幀數(shù)據(jù)。

微信截圖_20230403191439.png


謝謝樓上兩位,已明白該如何修改。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频