打印
[AT32F403/403A]

XMC能否失能写FIFO?

[复制链接]
764|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjerry|  楼主 | 2022-8-2 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原来使用STM32的FSMC操作68总线的LCD,这个LCD有2个写入脚E1,E2使用2个GPIO和NWE#信号经过或非门获得,操作完全正常。使用AT32F403A代替后居然无法点亮LCD。经过艰苦查找发现AT32的写入信号与程序逻辑不符,从而与GPIO失调,再而无法得到正确的E1、E2信号。

原来是AT32F403A的XMC写入FIFO造就了这些问题。现在加入硬延时解决了这个问题。
这个特性可以说是AT32F403A的长处但是也造成了与STM32的不兼容。
请问有办法把这个写入FIFO禁止吗?RM里面没有找到。

使用特权

评论回复
沙发
tanleitanlei| | 2022-8-8 14:04 | 只看该作者
你好!看你这边的描述说XMC存在写入FIFO,不知道你是如何判断XMC存在写入FIFO的呢? RM内是没有 XMC FIFO描述的。XMC时序部分与Sxx大同小异,具体时序的差异可以描述详细一些吗,我这边好确认你所描述的问题

使用特权

评论回复
板凳
zhjerry|  楼主 | 2022-8-9 11:55 | 只看该作者
本帖最后由 zhjerry 于 2022-8-9 11:58 编辑

希望您了解12864或12232并口(6800接口)写入时序。可以参考 <https://blog.csdn.net/baidu_25117757/article/details/113664351> 中的程序。我这个12232的液晶的左右61列分别受到E1、E2的控制。为了从FSMC得到6800接口我使用了2个GPIO(bLcdE1 , bLcdE2)和NWE信号分别或非后得到E1,E2。我这里的写入数据程序片段如下:

        if(LcdColumn<=60) {
                bLcdE1 = 0;
                *(vu16*)(LcdKeyA0) = (uint16_t)(0xB8 + (LcdLine^2));                //LcdCmdMode
                *(vu16*)(LcdKeyA0) = (uint16_t)LcdColumn;                               //LcdCmdMode
                *(vu16*)(LcdKeyA1) = (uint16_t)Data;                                        //LcdDataMode
                DelayFiFo();
                bLcdE1 = 1;
                }
        else {
                bLcdE2 = 0;
                *(vu16*)(LcdKeyA0) = (uint16_t)(0xB8 + (LcdLine^2));                //LcdCmdMode
                *(vu16*)(LcdKeyA0) = (uint16_t)(LcdColumn-61);                        //LcdCmdMode
                *(vu16*)(LcdKeyA1) = (uint16_t)Data;                                        //LcdDataMode               
                DelayFiFo();
                bLcdE2 = 1;
                }
        LcdColumn += 1;



以前使用STM32没有DelayFiFo(),点亮LCD完全符合设计。
改用AT32无法点亮LCD。发现上述写入信号和GPIO错步造成E1、E2无效,加入DelayFiFo()可以补偿错步。DelayFiFo()必须是20个连续的NOP。
由于我不需要实际的片选信号所以可以在4个BANK任意选择运行。
STM32的RM有提到在BANK2、BANK4有写入FIFO,避开后BANK发现实体完全符合RM描述, 不需要DelayFiFo();
AT32的RM有提到在BANK2有写入FIFO,实测任何BANK都有FIFO的存在。
如果不是我这个特殊的设计不会特别关注这个FIFO的存在。实际上我一个读写CF卡的程序使用到片选和多条地址线,STM32和AT32无区别运行。



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

232

帖子

4

粉丝