21ic问答首页 - AT32F403AVG的XMC问题?
AT32F403AVG的XMC问题?
hubeiluhua2021-03-28
我原来的程序工程是在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总线。
烦请大佬赐教!不胜感激。
赞0
评论
2021-04-07
赞0
请问一下,现在用示波器看找到问题了,是XMC传输的代码执行完成后,比如
for(i=0;i<=16;i--)
{
*(__IO uint8_t*) (0x60000000) =buf ;
}
//以下二句是我们要做一个传输完成的脉冲信号。
PCout(4)=1;
PCout(4)=0;
现在用示波器看这个PC4的脉冲信号在XMC数据信号之前就发出了,也就是说XMC数据线还没有传输完成前2us(示波器看的),PC4就输出了?但用STM32看PC4是在数据线传输完成后100ns发出的(示波器看的)。
也就是XMC的数据线没有输出完成,就在跑PCout(4)=1;PCout(4)=0;了。
我现在是在PCout(4)=1;PCout(4)=0;这两句前加了delay_us(3),请问有别的办法吗?是什么问题?最好保持与ST的一致;
评论
2021-04-07
赞0
评论
2021-04-03
赞0
AT32时序时对的,这边改一下也可以用发现应该是AT32的速度更快导致。其实也还好。我们这个产品用的外设也不少,都可以正常运行,如果长期使用稳定的话以后就用AT32,是个好东西
评论
2021-04-03
赞0
没用地址线,所以无关。
评论
2021-04-03
赞0
地址线没有用。
示波器看了一下,AT32的时序是正确的。可能还是与STM有点点小差异导致的,STM32连续写高电平数据据线为1时它不会跳到0.AT32数据线写1时每次要跳回到0再回到1.
评论
2021-04-03
赞0
评论
2021-03-29
可以用,是真的,大部分完成兼职的。
赞0
评论
2021-03-29
赞0
咋没看到地址线和NE线的初始化,AT32使用BANK1的SUBBANK4使用的NE线(就是外部储存器的CS线)是PC4,这里是不是和ST的有些不同,需要自己确认一下哦
评论
2021-03-29
您需要登录后才可以回复 登录 | 注册