6410串口中断跑飞、lcd初始化后跑飞的问题

6410串口启用FIFO并设置好中断后,调试的时候发现了一个问题。在串口发送大量数据的时候,程序会突然卡死,串口输出一些数据后就停止输出,其他中断也没有触发。这里记录一下自己的解决方法。参照数据手册的说明,将APLL和MPLL设置为533M,PCLK设置为66.5M。然后将OTHERS寄存器设置为同步,并在ddr初始化中将P1MEMCFG2的最低位设置为1后,调试正常。


另外一个问题是lcd初始化完成后,一旦开启数据显示,程序就会跑飞。串口输出乱码,更不能进行任何指令的传输。实际看到的就是,在framebuffer中写完数据后,开启数据显示,则lcd能显示对应图片。但是此时发送命令用的串口显示乱码,并且不能再接受任何别的命令,整个程序就只能显示一次。解决方法同上一个问题的解决方法相同。


这两个问题的共同点就是,都在内存中开辟了一个存储区用来存放数据。程序运行中会从内存读取对应的数据。猜测跑飞的原因是异步模式下读取数据出现问题。但是还没有在手册上找到相关的说明。


另外在调试完lcd后,FIFO的trigger level设置为16,测试了串口FIFO中断发生时,FIFO中有多少个数据,结果显示都是0个。本来以为串口FIFO中断发生过程应该是,假设有100个字节的数据,发生中断时FIFO中没有数据,于是加载64字节进去,这时串口不断发送数据,当发送到FIFO中剩下16个字节时,再次中断,然后加载剩下的36个字节,串口继续发送到FIFO剩下16个字节,但这时中断已没有数据可以加载,于是发完16个字节关闭中断。测试的时候发现结果却是,当FIFO为空时,加载数据,每加载一个字节的数据,串口就立即发送,然后触发中断,再加载一个字节,再立即发送。结果就是FIFO中的数据量一直都是0或1。这样的话FIFO中断和不用FIFO的中断有什么区别呢?这一块搞不懂了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值