我想使用CH582M的串口转发功能,代码如下:
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收到了数据以后,再从串口1转发出去。
其中CH582M串口1的RX引脚接了是ESP32的串口TX,CH582M的TX引脚接的树莓派的RX引脚。
ESP32发送端的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发送。
按照我的理解,由CH582M转发出去的数据应该是:
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
但是,实际从树莓派上读出来的数据是:
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
请问,这是怎么回事,或者说我的配置少了些什么?
热门产品 :
CH390:以太网控制器芯片