您尚未登录。

楼主 # 2022-08-21 00:53:52

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 122
积分: 35

t113的dma是否有bug,??????

请问一下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;

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn