0%

80*62红外热像Demo板调试记录

AT32(SPI)

  • 暂时没有用DMA搬运,SPI3用于读取MI0801模组数据,SPI2用于驱LCD

SPI配置参数

  • SPI配置需要注意的参数:极性CPOL和相位CPHA,详解SPI中的极性CPOL和相位CPHA

  • 如何判断CPOL:SCLK的空闲时候的电压,是0还是1,决定了CPOL是0还是1

  • 如何判断CPHA:数据采样时刻对应着的SCLK的电平,是第一个边沿还是第二个边沿,对应着CPHA为0还是1

    210430-at32-1.jpg

驱动LCD问题

  • LCD用到了SPI和另外几个IO,写入命令过程中,要将DC拉低,0X2A、0X2B、0X2C是命令,但是DC拉低没有对上,通过程序加delay解决,当SPI速率上升后,可以不用delay就能使用LCD
1
2
3
4
5
6
7
8
9
10
void LCD_WR_REG(uint8_t dat)
{
// Delay_us(5);
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TE) == RESET);
LCD_DC_Clr();//写命令
LCD_Writ_Bus(dat);
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TE) == RESET);
// Delay_us(5);
LCD_DC_Set();//写数据
}
  • AT32在读写SPI前要等待上一次读写操作完成,否则会出现发送数据缺少,接收卡死

SPI NSS上拉问题

  • at32单片机无法配置输出上拉或者下拉,SPI一开始调试的时候需要接着逻辑分析仪才可以,不接spi就接收不到数据,通过外加2k上拉电阻解决

AT32(SRAM)

配置使用224KB SRAM

  • 要打开224KB SRAM《AT32F403A & AT32F407入门使用指南》给了四种方法

    1.2.3 AT32F403A_407零等待/非零等待Flash和内置SRAM大小选择配置大小选择配置说明

    • 使用 ICP/ISP 方式
    • 使用脱机烧录器方式
    • 客户也可以使用在 Bootloader program(IAP)内修改 SRAM 的大小,并调用它
    • 启动文件中修改 AT32F403A_407 SRAM 为 224KB
  • 我用的是第三种方法,直接下一遍SRAM例程就开启了224KB SRAM

KEIL编译优化

  • Keil编译优化等级从0提升到3,使图像帧率从2.5fps提升到了3.5fps

不同编译优化等级区别

  • Level0:近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试

  • Level1:部分优化。移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试

  • Level2:默认优化等级。如果处于debug状态,部分代码行将不能被调试,具体做了什么优化好像没说

  • Level3:可能更牛的优化等级。会增加编译时间,可能会快,可能生成的文件大小会小,可能会暴毙

  • 相关文档:KEIL编译器【C语言编译选项优化等级说明】

实物

实物展示图

210430-at32-2.jpg

四种图像显示模式

210430-at32-3.jpg

红外显示示范

210430-at32-4.jpg