STM32F407与大彩串口屏的调试经验总结

 

        博主在一次电赛训练题中使用到了广州大彩公司的F系列串口屏, 遇到了很多坑, 也学到了很多东西,在这里给大家分享一下。

1.确定固件版本号

        固件版本号代表了设备烧入的程序版本,获取版本的方法如下:

        1.      直接看屏背面标签。正常情况下,产品出厂前背面均有型号和标签,如图所示。

STM32F407与大彩串口屏的调试经验总结_第1张图片

 

 2.      如果屏背面无贴固件标签,则需连接转接板,然后打开VisualTFT软件,选择串口COM通道,点击“联机设备”,如图 1.4 所示。联机成功后,软件右下角将显示对应产品版本号。

STM32F407与大彩串口屏的调试经验总结_第2张图片

 

 

补充一点,大彩的转接板接线方式和普通的串口接线有区别, TX-TX ,RX-RX  ,GND-GND, 不需要接VCC!!!

 

 

2.RS232和TTL电平设置

       这个问题很重要!!!,因为彩屏是默认为RS232电平有效,单片机的是TTL电平,所以我们要将其设置成TTL电平有效,博主当初因为这个问题,调了一周的时间都无法实现板子和彩屏通信,下面介绍设置方法:

      先找到通讯接口J5附近标有白色丝印“ON= TTL, OFF=RS232”,如图 所示,然后将其短路即为TTL电平,反之断开就是232电平了。

STM32F407与大彩串口屏的调试经验总结_第3张图片

 

如还有其他硬件方面问题,请参考以下链接解决:http://blog.sina.com.cn/s/blog_e360f58a0102wr1m.html

 

3.彩屏例程移植到F407

       把彩屏例程移植到F407上,只需将官方所给例程中的cmd_queue.c,  hmi_driver.c,  cmd_process.h,  cmd_queue.h,   hmi_driver.h 复制至F407程序中, 编译后将  #include "hmi_user_uart.h" 改为自己的串口文件, 博主的是 #include "usart.h"  ,再将 “hmi_user_uart.h” 中的宏定义

#define uchar    unsigned char
#define uint8    unsigned char
#define uint16   unsigned short int
#define uint32   unsigned long
#define int16    short int
#define int32    long

复制至自己的 “usart.h ”文件中

并将  “hmi_user_uart.c” 文件中的

void  SendChar(uchar t)
{
    USART_SendData(USART1,t);
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    while((USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET));//等待串口发送完毕
}

复制到自己的 “usart.c”中,编译后将无关的头文件去掉即可。

STM32F407与大彩串口屏的调试经验总结_第4张图片

 

4.替换串口中断函数

将自己程序中的串口中断函数改为 

    void USART1_IRQHandler(void)
    {
           u8 Res;
           if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
           {
               Res =USART_ReceiveData(USART1);
        
               uint8_t data = USART_ReceiveData(USART1);
               queue_push(data);
             } 

    } 

这步骤很重要,如果不替换串口中断函数, 单片机将无法收到并正确响应彩屏所发信息。

STM32F407与大彩串口屏的调试经验总结_第5张图片

 

5.单片机与彩屏通信问题

       首先先确定波特率, 通信失败有百分之九十的可能是波特率问题, 确定波特率正确后,使用串口调试助手或者DEBUG看单片机所发的指令是否正确, 指令内容在官方提供的资料中有。  确定波特率正确,其他连接没有问题后, 在 stm32f4xx.h文件中,找 “HSE_VALUE”, 看看是否晶振和板子上一致,博主的是8M晶振。

#if !defined (HSE_VALUE) 
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

 

6.软件仿真问题

很遗憾,F407不能软件仿真, 博主是用的F103进行软件仿真,按照官方所给的教程,编写COMDBUG文件

MODE COM4 115200,0,8,1
ASSIGN COM4 S1OUT

将其按照指导步骤加入工程即可实现软件仿真, 值得注意的是这里的1IN>和S1OUT中的1是指串口1,如需要用串口2仿真则需要将其改成和S2OUT后仿真才可看到现象。

STM32F407与大彩串口屏的调试经验总结_第6张图片

 

 以上是博主的一些总结,水平有限,如有错误,希望大家指正。

 

你可能感兴趣的:(STM32)