stm32g474调试记录,ad、da定时器触发dma传输


使用stm32g474ret6,由于程序是在stm32f446上改的,所以硬件驱动上出了很多问题:

1、RTC不走,因为没开bkp写使能,笔误
2、AD不对,因为引脚配置没有给模拟,与F303不同
3、IO不对,因为不支持位带。

  g474的GPIO在AHB2,0x48000000这个范围。可通过定义位段的方式解决不支持位带的问题。
4、DMA不对,因为DMAMUX的通道是DMA通道号减1
5、AD的触发不对,因为需要给ADSTART才开始触发,与F303不同
6、DA的触发不对,DAC只能按32bit访问,导致dma传输错误(TE)。修改了DMA位宽后成功
7、AD、DA的DMA同步不对,每次AD的DMA传输完成后的中断,DA的dma是对的,AD的dma还有值没有完成。原因:AD的DMA开了循环模式,关掉就好了
8、flash在写解锁时错误:MFLASH->KEYR=0xCDEF89AB;进入hardfault。原因:自己定义的位段方式方位flash寄存器,结构定义错位
9、flash擦除失败:页大小错误,导致计算的页号错误。这芯片默认是双页模式,2KB的页大小
10、进入standby后立刻唤醒,原因:多使能了wukp
11、睡眠时灯是亮的,原因:PA15的复位值是上拉的
12、下载后报错,这是最开始的问题,一直到最后才解决。

下载时报错内容:
Erase Done.
Programming Done.
Contents mismatch at: 080027B6H  (Flash=64H  Required=96H) !
Contents mismatch at: 080027C6H  (Flash=6EH  Required=96H) !
Contents mismatch at: 080027CCH  (Flash=EEH  Required=96H) !
Contents mismatch at: 080027CDH  (Flash=E7H  Required=20H) !
Contents mismatch at: 080027CEH  (Flash=00H  Required=FDH) !

除非全片擦除后,去掉verify,可以正常调试,但这样每次都全片擦除,会影响存在flash中的配置信息。
使用带stlink的NUCLEO-G474RE开发板,keil 5.27仍然报同样错误,使用stm32cubeide后,提示stlink需要升级,升级后仍然不行。查到
http://www.stmcu.org.cn/module/forum/thread-622538-1-7.html
后,在Keil.STM32G4xx_DFP.pdsc文件中,<device Dname="STM32G474RCTx">处增加STM32G4xx_512_Dual.FLM后,在flash下载选项中选择此文件指明是Dual的flash,解决。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM