大家好!
我使用的是C6678,目前在做Uart EDMA的中断,即fifo模式下的uart接收到数据,由EDMA搬运,搬完后产生中断。我已经基本实现了这个功能,但是在调试过程中有几个问题:
1. 我使用串口调试工具,发送字符,不论一次发送几个字符,都会发生一次edma搬运,产生一次中断,我的Uart的triggerLevel设置为8或14 bytes,似乎都不生效。我在手册中看FCR中的triggerlevel字段是一个只读字段,所以我想问,这个triggerlevel正确的配置方式是什么?
2. 我设置了一个uart_buffer[2][8]这样的ping pong buffer,在完成一次搬运之后,如果搬运的数据小于8字节的话,比如只发送了4个字符,那么uart_buffer[0][0-3]有数据,但buffer中的其他内容会被写入一个看起来像是随机值。不知道是什么原因?
3. uart的fifo模式下,fifo是16字节大小的,而uart的triggerlevel是1,2,4,8或14,这个triggerlevel和fifo大小的关系是什么? 配置EDMA时,EDMA的dst buffer大小设置是要个triggerlevel大小保持一致吗还是怎样? 配置EDMA OPT的时候,在CONST模式下,有一个参数是FIFOWIDTH,那这个参数该依据什么来设置呢?是依据uart的triggerlevel还是什么?
谢谢~