19.4
DTC模块框图分析
19.4.1
DTC内部寄存器
MRA、MRB、SAR、DAR、CRA和CRB这些都是属于DTC内部的寄存器,它们是无法通过CPU直接访问的。这些DTC内部寄存器中设置的值作为传输信息放置在SRAM区域中。当生成激活请求时,DTC从SRAM区域读取传输信息,并将其设置在其内部寄存器中。数据传输结束后,内部寄存器内容作为传输信息写回SRAM区域。
我们在使用DTC时,是通过配置传输信息来间接配置这些DTC内部寄存器的。
19.4.2
事件链接
DTC可以在完成一个传输请求时产生事件链接请求。然而,当传输目的地是外部总线时,事件链接请求将在写入缓冲器完成之后发出,而不是在写入实际传输目的地完成之后发出。
19.5
DTC传输模式
DTC模块支持三种操作模式,相对于DMAC,少了重复-块传输模式。
正常模式:在正常模式下,DTC每次接收到中断触发时都会传输单个数据单元。数据单元可以是1、2、4字节。传输的长度(length)可以设置为[0,65535]。当长度设置为0时,DTC将执行65536传输,而不是0。在每次传输之后,源地址和目的地址可以单独设置为固定、递增或递减。每次传输后,16位计数器递减。当计数器达到0时,DTC传输将不再会被中断源触发,CPU可以被中断以通知所有传输已完成。
重复模式:重复模式的工作方式与正常模式相同,但长度(length)限制为范围[1,256]内的整数。当传输计数器达到0时,计数器被重置为其配置值(length),重复区域(源或目的地址)被重置为其起始地址,并且传输仍将会被中断触发。
块模式:在块模式下,每个中断传输的数据单元量可以设置为范围[1,256]内的整数。还可以将要传输的块数量(num_blocks)配置为16位数字,即可以设置为[0,65535]。当长度设置为0时,DTC将执行65536传输,而不是0。每次块传输后,重复区域(源或目的地址)将重置为原始地址,而另一个地址将递增或递减到下一个块。
19.5.1
正常传输模式
正常传输模式(NormalTransferMode)允许在单个激活源上进行1字节(8位)、1半字(16位)、1字(32位)数据传输。传输计数可以设置为1到65536(0x10000)。传送源地址和目的地址也可以独立设置为递增、递减或固定。该模式允许在指定的计数传输结束时生成对CPU的中断请求。
正常传输模式的内存映射如下图所示
19.5.2
重复传输模式
重复传输模式(RepeatTransfer Mode)允许在单个激活源上进行1字节(8位)、1半字(16位)或1字(32位)数据传输。重复区域的传输源或传输目的地必须在MRB.DTS位中指定。传输计数可以设置为从1到256。
当指定的传输计数完成时,恢复重复区域中指定的地址寄存器的初始值,恢复传输计数器的初始值,并重复传输。另一地址寄存器连续递增或递减或保持不变。
在重复传输模式下,当传输计数器CRAL递减到0x00时,CRAL值更新为CRAH寄存器中设置的值。因此,传输计数器不会清0,当MRB.DISEL位设置为0时,将禁用对CPU的中断请求。当指定的数据传输完成时,会生成对CPU的中断请求。
当传输源为重复区域时,重复传输模式的内存映射如下图所示:
19.5.3
块传输模式
块传输模式(BlockTransfer Mode)允许在单个激活源上进行单块数据传输。数据块区域的传输源或传输目的地必须在MRB.DTS位中指定。块大小可以设置为1至256字节、1至256半字(2至512字节)或1至256字(4至1024字节)。
当指定块的传输完成时,恢复块区域中指定的块大小计数器CRAL和地址寄存器(当MRB.DTS=1时为SAR寄存器或当DTS=0时为DAR寄存器)的初始值。另一地址寄存器连续递增或递减或保持不变。传输计数(块计数)可以设置为从1到65536。该模式允许在指定计数块传输结束时生成对CPU的中断请求。
块传输模式的内存映射如下图所示:
全部0条评论
快来发表一下你的评论吧 !