请问一下t113的dma是否有bug,我在测试uart3的rxd接收dma,配置为dma1,然后开始接收数据,比如我配置为接收256个字节产生dma完成中断,这个是没有问题的,并且也能正常接收到数据,但是想实现任意长度数据的接收,然后就想到读取dma寄存器的
0x0118 + N*0x0040 DMAC Channel Byte Counter Left Register N (Default Value: 0x0000_0000)这个寄存器,看资料这个寄存器里面读出来的数据就是代表本次dma传输剩余的数据,比如我上位机发送10个数据过去,然后这里应该读取出来的是(256-10)=246个,打是我在读取中发现这里的数据固定为256.....只有当上位机发送128个字节之后,这里的数据变成128 ,然后继续保持128不变,直到上位机发送完256个字节这里才变成0,
也就是说这个寄存器里面的数据是按照128字节跳跃的,并不是接收到多少个,这里减少多少个,是我配置的问题还是这个芯片本身的bug,
如果按照128字节跳跃的话,我该如何实现dma接收不定长数据的功能
uart3接收配置如下
mcu_rx_dma_set.loop_mode =0;
mcu_rx_dma_set.wait_cyc = 0x80;
/* uartMCU_rx_dma->data_block_size = 1 * DMAC_CFG_SRC_DATA_WIDTH_8BIT/8;*/
mcu_rx_dma_set.data_block_size = 1 * 32 / 8;
mcu_rx_dma_set.channal_cfg.src_drq_type = DMAC_CFG_TYPE_UART3; /* UART3 */
mcu_rx_dma_set.channal_cfg.src_addr_mode = DMAC_CFG_SRC_ADDR_TYPE_IO_MODE;
mcu_rx_dma_set.channal_cfg.src_burst_length = DMAC_CFG_SRC_1_BURST;
mcu_rx_dma_set.channal_cfg.src_data_width = DMAC_CFG_SRC_DATA_WIDTH_8BIT;
mcu_rx_dma_set.channal_cfg.dst_drq_type = DMAC_CFG_TYPE_DRAM; /* DRAM */
mcu_rx_dma_set.channal_cfg.dst_addr_mode = DMAC_CFG_DEST_ADDR_TYPE_LINEAR_MODE;
mcu_rx_dma_set.channal_cfg.dst_burst_length = DMAC_CFG_DEST_1_BURST;
mcu_rx_dma_set.channal_cfg.dst_data_width = DMAC_CFG_DEST_DATA_WIDTH_8BIT;
离线
这是裸奔?
离线