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
驱动LCD问题
- LCD用到了SPI和另外几个IO,写入命令过程中,要将DC拉低,0X2A、0X2B、0X2C是命令,但是DC拉低没有对上,通过程序加delay解决,当SPI速率上升后,可以不用delay就能使用LCD
1 | void LCD_WR_REG(uint8_t dat) |
- 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:可能更牛的优化等级。会增加编译时间,可能会快,可能生成的文件大小会小,可能会暴毙