CH554 UART0 怎么改更高的波特率(115200),主频要怎么改?

CH554 UART0 怎么改更高的波特率(115200),主频要怎么改?用的5V短接还是3.3V?还有什么要改的?


CH554以57600 波特率打开串口,USB转TTL以10ms速度一直发送10字节数据包,发送200左右数据包后CH554不处理,需要串口,USB都断电重启才能恢复,是CH554串口接收缓存满导致的吗?有什么方法重置吗?

您好,

设置波特率115200可以设置主频为24M,选择合适的模式和分频系数。要注意的是,主频要到达24M必须5V供电电路。

测试57600不会存在发送几秒后异常的情况。可以将您说的不处理问题详细描述一下。测试直接接收数据串口回传是否会有问题。


while(1)

{

RecvChar = CH554UART0RcvByte();

CH554UART0SendByte(RecvChar);

if (nRecvLen == 0 && RecvChar == 0x7E)

{

RecvData[nRecvLen] = RecvChar;

nRecvLen = nRecvLen +1;

}

else if (nRecvLen == 1)

{

nRecvSum = RecvChar;

RecvData[nRecvLen] = RecvChar;

nRecvLen = nRecvLen +1;

}

else if (nRecvLen > 100)

{

memset(RecvData,0,255);

nRecvSum = 0;

nRecvLen = 0;

RecvChar = 0;

}

else if (nRecvLen > 1 && nRecvLen < nRecvSum)

{

RecvData[nRecvLen] = RecvChar;

nRecvLen = nRecvLen +1;

if (nRecvLen >= nRecvSum && nRecvSum != 0)

{

DealRecvData();

memset(RecvData,0,255);

nRecvSum = 0;

nRecvLen = 0;

RecvChar = 0;

}

}

}


extern void DealRecvData()

{

if(CheckCRC() == 1)

{

if(RecvData[2] == 0x01)

{

HIDData[0]= 0x02;

HIDData[1]= RecvData[3];

? HIDData[2]= 0x00;

HIDData[3]= RecvData[4];

HIDData[4]= RecvData[5];

HIDData[5]= RecvData[6];

HIDData[6]= RecvData[7];

HIDData[7]= 0x00;

HIDData[8]= 0x00;

HIDData[9]= 0x00;

HIDData[10]= 0x00;

HIDData[11]= 0x00;

HIDData[12]= 0x00;

HIDData[13]= 0x01;? ??

CH554UART0SendByte(11);

Enp1IntIn();

}

else if (RecvData[2] == 0x02)

{

HIDData[0]= 0x02;

HIDData[1]= RecvData[3];

? HIDData[2]= 0x00;

HIDData[3]= RecvData[4];

HIDData[4]= RecvData[5];

HIDData[5]= RecvData[6];

HIDData[6]= RecvData[7];

HIDData[7]= RecvData[8];

HIDData[8]= 0x01;

HIDData[9]= RecvData[9];

HIDData[10]= RecvData[10];

HIDData[11]= RecvData[11];

HIDData[12]= RecvData[12];

HIDData[13]= 0x02;

CH554UART0SendByte(21);

Enp1IntIn();

}

}

}

接收串口消息,模拟触摸,运行十几秒触摸没反应了,如果串口消息发送慢点(20ms) 能处理过来



问题找到了,长度赋值的时候有时会漏字节,整个都跳过就行了


只有登录才能回复,可以选择微信账号登录