智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1585|回复: 3
打印 上一主题 下一主题

kl25 dma

[复制链接]

3

主题

13

帖子

0

精华

高级会员

Rank: 4

积分
865
威望
429
贡献
234
兑换币
280
注册时间
2013-2-27
在线时间
101 小时
毕业学校
集美大学
跳转到指定楼层
1#
发表于 2014-4-24 15:29:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
火哥  求助!!!   KL25怎样用dma采集摄像头数据呢???  卡在这好久了     现在看到那DMA的程序都想吐了   能发份代码不   
回复

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
威望
216
贡献
130
兑换币
129
注册时间
2013-11-6
在线时间
41 小时
毕业学校
河北工程大学
2#
发表于 2014-4-27 09:07:40 | 只看该作者
void DMAPer(void)
{
                                      /*      int j;   
                                          // Clear Destionation memory  
                                          for( j=0; j < BUFF_SIZE; j=j+4)
                                          {
                                              *((U32 *)(DESTINATION_ADDRESS+j)) = 0x2E;
                                          }*/

    // Enable Clock gating for the DMA and DMA MUX
    SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;
    SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;
        
    // Config DMA Mux for UART0 operation
    // Disable DMA Mux channel first
    DMAMUX0_CHCFG0 = 0x00;
   
    // Clear pending errors or the done bit         
    if (((DMA_DSR_BCR0 & DMA_DSR_BCR_DONE_MASK) == DMA_DSR_BCR_DONE_MASK)
           || ((DMA_DSR_BCR0 & DMA_DSR_BCR_BES_MASK) == DMA_DSR_BCR_BES_MASK)
           || ((DMA_DSR_BCR0 & DMA_DSR_BCR_BED_MASK) == DMA_DSR_BCR_BED_MASK)
           || ((DMA_DSR_BCR0 & DMA_DSR_BCR_CE_MASK) == DMA_DSR_BCR_CE_MASK))
    {
        DMA_DSR_BCR0 |= DMA_DSR_BCR_DONE_MASK;
    }
      
    // Set Source Address (this is the UART0_D register
    DMA_SAR0 = SOURCE_ADDRESS;
      
    // Set BCR to know how many bytes to transfer
    DMA_DSR_BCR0 = DMA_DSR_BCR_BCR(120);       //60
      
    // Clear Source size and Destination size fields.  
    DMA_DCR0 &= ~(DMA_DCR_SSIZE_MASK
                    | DMA_DCR_DSIZE_MASK
                    );
      
    // Set DMA as follows:
    //     Source size is byte size
    //     Destination size is byte size
    //     D_REQ cleared automatically by hardware
    //     Destination address will be incremented after each transfer
    //     Cycle Steal mode
    //     External Requests are enabled
    //     Asynchronous DMA requests are enabled.
    DMA_DCR0 |= (DMA_DCR_SSIZE(1)
                   | DMA_DCR_DSIZE(1)
                   | DMA_DCR_D_REQ_MASK
                   | DMA_DCR_DINC_MASK
                | DMA_DCR_CS_MASK                     //周期挪用位
                   | DMA_DCR_ERQ_MASK
              //     | DMA_DCR_EADREQ_MASK     //无影响?  异步请求使能位
                     | DMA_DCR_EINT_MASK            //DMA完成中断允许位使能   
                        
                   );
      
    // Set destination address
    DMA_DAR0 =(uint32_t)image+CountDone*120; //取image首地址
      
    // Enables the DMA channel and select the DMA Channel Source  
    DMAMUX0_CHCFG0 = 0x3C; //    总是使能
    DMAMUX0_CHCFG0 |= DMAMUX_CHCFG_ENBL_MASK;
     DMAMUX0_CHCFG0 |= DMAMUX_CHCFG_TRIG_MASK;   //周期触发

    // Enable DMA0 IRQ
  // pit_init(0,1000);      //   1ms
    // pit_init(0,1);    // 1=1us
      pit_ns(0,12);  // 1=41ns
    enable_irq(DMA0_irq_no);
}
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
151
威望
83
贡献
40
兑换币
43
注册时间
2013-9-28
在线时间
14 小时
毕业学校
江苏科技大学
3#
发表于 2014-4-29 15:12:04 | 只看该作者
RIDER 发表于 2014-4-27 09:07
void DMAPer(void)
{
                                      /*      int j;   

这个是用什么触发DMA传输呀,源地址怎么设置?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
151
威望
83
贡献
40
兑换币
43
注册时间
2013-9-28
在线时间
14 小时
毕业学校
江苏科技大学
4#
发表于 2014-4-29 15:27:33 | 只看该作者
RIDER 发表于 2014-4-27 09:07
void DMAPer(void)
{
                                      /*      int j;   

哦,这个是周期触发,我如果想用PORTA 触发,采集PORTC数据,应该怎么写呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 03:17 , Processed in 0.052676 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表