串口使用FIFO DMA的方式收发数据,每帧数据10个字节,FIFO采用下面的配置,串口接收不到数据。
fifoConfig = UART_FIFO_CONFIG(UART_TRIG_LVL_GRANULARITY_1,
UART_TRIG_LVL_GRANULARITY_1,
10,
10,
1,
1,
UART_DMA_EN_PATH_SCR,
UART_DMA_MODE_1_ENABLE);
/* Configuring the FIFO settings. */
UARTFIFOConfig(baseAdd, fifoConfig);
串口接收数据是否完成的判断函数是
while((HWREG(reg + UART_RXFLL)&0xFF) == 10)
{
paramType->RxFlag = 1;
paramType->Root.Buffer[num][len++] = UARTCharGetNonBlocking(reg);
paramType->Root.Clen[num]++;
}
请问应该怎样设置?
还有技术参考手册上 的 19.3.6.4.1 DMA Transfers (DMA Mode 1, 2, or 3) 这页想说明什么,不太明白,能解释下吗?
还有下面的几个问题
问题1:FIFO 方式和DMA方式可以单独或者一起使用吗?
问题2:接收、发送FIFO中内存的数据存放地址?在调试环境下怎么看?
问题3:DMA方式的存放地址在那,调试环境下怎么看?
问题4:MDR1的MODESELECT 的3中UART模式有什么区别?
问题5:串口收发配置是只有下面的3种方式吗,每种方式的判断标志位是?
1)单独使能DMA mode0 通过FIFO_EN=0,DMA和 RHR,THR之间的数据传送一次一个字节,此时判断数据收发的标志位 是LSR的bit4,bit5 和bit0吗?
2)单独 FIFO UART_SCR[0] DMA_MODE_CTL =1 , UART_SCR[2:1]DMA_MODE_2 =0 此时的判断标志位?
3)DMA和FIFO 配合使用,数据先到FIFO,然后再传到DMA,每个阶段是怎么触发的,判断标志是?