正在加载图片...
州周立功单片机发展有限公司Te:(020)3873097638730977Fax:38730925htpr/w 下图为固件处理建立DMA请求和EOT的程序流程图 Stall Control Endpoint Save Setup DMA Request State<-IDLE ACK Device Request End of Eo State < PENDING Program D1 ACK Device Request End of write Registe DMA配置寄存器 D12的DMA操作由其DMA配置寄存器进行控制。该寄存器由“设置DMA”命令设置。寄存器中不 是所有的位都和DMA操作有关。位4(中断脚模式)和位7(时钟分频系数)控制D12的中断源。 下表所示为推荐的寄存器编程汇 名称 DMA模式 非DMA模式 0&DMA字符串 &1 DMA使能 23456 用于IN标志 0用于OUT标志 自动重装 端点4中断使能 0 7。端点5中断使能 默认情况下,D12和DMAC都不处于自动重装模式。不想让器件的DMA“自动重新启动”是因为这 是一个协议层的操作,也就是说在主机的控制之下。在EOT,D12和DMA控制器的DMA都被禁止。 件需要重新使能以使它们在接收到主机的建立DMA请求时重新启动DMA传输 需要注意的是,在DMA模式中来自端点4和5的中断被禁止。这些端点上的中断服务是不必要的, 而且使DMA传输中有潜在的缺陷。DMA可以看作是最高级的中断,可以在任意两条CPU指令之间执行, 甚至在ISR中。由于在传输当中DMA的状态任何时候都有可能改变,因此任何想要用来检测DMA状态 的程序都是不可靠的 以下是一个IN标志DMA传输编程示例dma_dr和 dma transfer size已通过建立DMA请求设置。 dma start(dma dir, Main DmaBuf, dma transfer size, 3); dma. bits. dma burst =3: dma. bits. dma enable= I dma. bits. dma direction= dma dir. dma bits. auto reload=0 dma. bits. normal _plus sof =0; dma. bits. endp 4 interrupt enable=0广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax: 38730925 http://www.zlgmcu.com 2 下图为固件处理建立 DMA 请求和 EOT 的程序流程图 DMA 配置寄存器 D12 的 DMA 操作由其 DMA 配置寄存器进行控制 该寄存器由 设置 DMA 命令设置 寄存器中不 是所有的位都和 DMA 操作有关 位 4 中断脚模式 和位 7 时钟分频系数 控制 D12 的中断源 下表所示为推荐的寄存器编程汇总 位 名称 DMA 模式 非 DMA 模式 0&1 DMA 字符串 `1`&`1` 无关 2 DMA 使能 `1` `0` 3 DMA 方向 `1`用于 IN 标志 `0`用于 OUT 标志 无关 4 自动重装 `0` 无关 5 中断脚模式 `0` `0` 6 端点 4 中断使能 `0` `1` 7 端点 5 中断使能 `0` `1` 默认情况下 D12 和 DMAC 都不处于自动重装模式 不想让器件的 DMA 自动重新启动 是因为这 是一个协议层的操作 也就是说在主机的控制之下 在 EOT D12 和 DMA 控制器的 DMA 都被禁止 固 件需要重新使能以使它们在接收到主机的建立 DMA 请求时重新启动 DMA 传输 需要注意的是 在 DMA 模式中来自端点 4 和 5 的中断被禁止 这些端点上的中断服务是不必要的 而且使 DMA 传输中有潜在的缺陷 DMA 可以看作是最高级的中断 可以在任意两条 CPU 指令之间执行 甚至在 ISR 中 由于在传输当中 DMA 的状态任何时候都有可能改变 因此任何想要用来检测 DMA 状态 的程序都是不可靠的 以下是一个 IN 标志 DMA 传输编程示例,dma_dir 和 dma_transfer_size 已通过建立 DMA 请求设置 dma_start(dma_dir, MainDmaBuf, dma_transfer_size, 3); dma.bits.dma_burst = 3; dma.bits.dma_enable = 1; dma.bits.dma_direction = dma_dir; dma.bits.auto_reload = 0; dma.bits.normal_plus_sof = 0; dma.bits.endp_4_interrupt_enable = 0; Write Register Setup DMA Request? State = IDLE? Save Setup DMA Request Program DMAC Program D12's DMA Configuration Register State <- RUNNING ACK Device Request State <- PENDING End of Write Register Stall Control Endpoint Yes No Yes No EOT State = PENDING? Program DMAC Program D12's DMA Configuration Register State <- RUNNING ACK Device Request State <- IDLE End of EOT Yes No
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有