虽然大彩的官方提供了串口远程升级的资料,在链接https://www.gz-dc.com/category/typeid/356#mainTop中,提供了相关的文档和代码参考。不过在实际使用时出现了单片机串口远程升级大彩串口屏时,发送升级指令没反应的情况。
这是由于链接中的文档和代码是基于在未开启CRC校验的情况,若工程配置中开启了CRC校验,直接使用链接中的代码,屏幕不会识别出升级指令。下图中显示的就是在的工程属性中开启了CRC校验。
解决方案一:
将当前工程属性中的 “CRC16”关闭。
解决方案二:
在代码中,为升级指令添加CRC16校验。
以下是利用大彩提供的驱动库hmi_driver.c相关函数,编写的添加了CRC16校验的串口升级指令
void UpdataLcd(uint32_t BaudRate,uint32_t fsize)
{
uint8 buf_10 = 0xF1 , temp = 0;
int8_t i = 0;
BEGIN_CMD();
TX_8(0xF1);
for(i = 3;i>=0;i--)
{
temp=(fsize>>(i*8))&0xff;
TX_8(temp);
buf_10 += temp;
}
//临时波特率,提升下载速度。不修改当前波特率时,设置0。
for(i = 3;i >= 0;i--)
{
temp=(BaudRate>>(i*8))&0xff;
TX_8(temp);
buf_10 += temp;
}
TX_8(buf_10);
END_CMD();
}