我原来的程序工程是在STM32F103VE下开发的,主要是想将STM32F103VE下的HEX直接搬来AT32F403AVG使用,现在发现AT32F403AVG的XMC(即ST的FSMC)写数据时连发送8字节数据,只成功接收前4字节,后4字节好像丢失了,比如我写0xaa 0xbb 0xcc 0xdd 0x11 0x22 0x33 0x44只收到了0xaa 0xbb 0xcc 0xdd ,丢失了0x11 0x22 0x33 0x44,写代码是*(__IO uint8_t*) (0x6c000000) = byte[i];。在STM32F103VE和GD32F103VE上都没有这个问题,硬件使用了FSMC 8bit数据位宽的写模式,只使用NWE信号与DAT0 - 7,共计9个信号。初始化代码我也看了好多遍了都差不多,其实我发现AT32的固件与ST的差不多,只不过结构体变量名有少许变化。我也按照AT的固件库改了,始终是不行,但是我发现*(__IO uint8_t*) (0x6c000000) = byte写8次后再空写即*(__IO uint8_t*) (0x6c000000) = 0xff 4次就收到了丢失的0x11 0x22 0x33 0x44。虽然可以但这不科学呀,老板也不允许擅自这样干。
手册上看关于两者的PSRAM这块也都是差不多的,时序图也是一样的。实是在郁闷AT的XMC总线。
烦请大佬赐教!不胜感激。
|