10.5 软件程序解析
1. main.c 源文件软件程序解析
main.c 的函数列表如下。
2. int main(void) 函数
int main(void) 函数为主函数,其流程如下。在各种外设初始化后,首先让 LCD 显示主菜单图片;接着进入主循环,依次判断串口'下载'指令、串口通用指令或触摸屏中断事件的发生,在这些事件触发后,调用相应的处理函数。
在 void mcu_uart_process() 函数和 void Flash_download(void) 函数中,涉及 NIOS II 和 PC 端进行串口通信的基本协议帧,这些协议的格式列表以及 Flash 空间分配如下所示。
表 10-4 FLASH 地址空间映射表
说明:
- 软字库部分的 Flash 空间分配暂时保留,待后续实例进一步解析和应用。
- 1GB 的 FLASH 地址空间分布:2KB×64page×1024block。1 幅满屏图片所占地址空间:800×480×2B=750KB=375page<6block(384page),因此 6block 存储一张 800×480 的图片是没有问题的。
- 对于图片数据的存储,头 4 个字节为字模分辨率信息(存储在头 2K 地址空间),后面的数据才是实际图片模的数据(从头 2K 地址空间之后开始存储)。
串口通信协议说明
说明:
- 串口下发数据的时候依次发送:帧头 (1Byte)+ID(1Byte)+指令 (1-2Byte)+图片或字模信息 + 图片或字模数据 + (等待返回数据)+ 帧尾。帧头为 0x55,帧尾为 0xcc、0x33、0xc3、0x3c。
- 在串口发送完一次指令(包括 Flash 擦除指令)后,需等待接收到两个字节返回数据作为响应,然后才可发送帧尾结束本次操作。
- 两个字节的 X 或 Y 分辨率都是高字节在前,低字节在后。
其他参数说明
说明:
- 0xaa 表示帧头,+0xcc+0x33+0xc3+0x3c 表示帧尾。
- 串口波特率固定为 115200bit/s。
3. static void handle_iic_interrupts(void) 函数
具体实现请参考相关例程代码。
4. void init_pio(void) 函数
具体实现请参考相关例程代码。


