OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5833|回复: 11

F103zet6 DMA

[复制链接]

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
发表于 2017-6-24 10:07:23 | 显示全部楼层 |阅读模式
1金钱
    DMA_Port_A              = 49,
    DMA_Port_B              = 50,
   
    DMA_Port_C              = 51,
   
    DMA_Port_D              = 52,
   
    DMA_Port_E              = 53,

这是K60的库,想问一下stm32可以使用IO口作为DMA传输通道吗?在手册里和程序里都找不到

DMA.PNG

最佳答案

查看完整内容[请看2#楼]

http://www.openedv.com/forum.php?mod=viewthread&tid=102694&page=1#pid580145
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2017-3-31
在线时间
118 小时
发表于 2017-6-24 10:07:24 | 显示全部楼层
回复

使用道具 举报

14

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2017-3-31
在线时间
118 小时
发表于 2017-6-24 11:34:28 | 显示全部楼层
可以,stm32没有为GPIO专门配置DMA通道,但是可以用M2M模式,外设基地址用GPIO数据寄存器地址
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-24 12:30:34 | 显示全部楼层
Owen 发表于 2017-6-24 11:34
可以,stm32没有为GPIO专门配置DMA通道,但是可以用M2M模式,外设基地址用GPIO数据寄存器地址

能不能举个例子呢?你有相关的例程可以参考吗

回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-24 15:10:40 | 显示全部楼层
Owen 发表于 2017-6-24 10:07
http://www.openedv.com/forum.php?mod=viewthread&tid=102694&page=1#pid580145

如果只需要一个IO口作为摄像头的像素中断触发DMA是不是是一样的?我看他是7个口来触发的。
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-24 15:20:58 | 显示全部楼层
Owen 发表于 2017-6-24 11:34
可以,stm32没有为GPIO专门配置DMA通道,但是可以用M2M模式,外设基地址用GPIO数据寄存器地址

怎么让这个IO口绑定像素中断的上升沿或者下降沿呢?
回复

使用道具 举报

14

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2017-3-31
在线时间
118 小时
发表于 2017-6-24 18:22:36 | 显示全部楼层
福尔摩木南 发表于 2017-6-24 15:20
怎么让这个IO口绑定像素中断的上升沿或者下降沿呢?

我理解你的意思是在一个I/O口出现上升沿或者下降沿的时候启动DMA开始传输数据。GPIO没有直接的DMA请求信号,估计你得先用外部中断,然后在中断处理部分开启DMA进行数据传输
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-24 19:09:20 | 显示全部楼层
Owen 发表于 2017-6-24 18:22
我理解你的意思是在一个I/O口出现上升沿或者下降沿的时候启动DMA开始传输数据。GPIO没有直接的DMA请求信 ...

想问你一下你说的外部中断,具体应该怎么处理呢?下面的是在K60上面的程序


[mw_shl_code=applescript,true]//外部中断服务函数
void PORTC_Interrupt()
{
  if(PORTC_ISFR & (1 << 18))//场中断 //PTC18触发中断
  {
      PORTC_ISFR |= (1 << 18);//写1清中断标志位
      
      HREF_count=0;
      
      VSYN_flag=0;
      
  }
  if(PORTC_ISFR & (1 << 19))//行中断 //PTC19触发中断
  {
      PORTC_ISFR |= (1 << 19);//写1清中断标志位
      
      HREF_count++;
      
      DMA_EN(DMA_CH1);
      
  }
}

//PIT中断服务函数
void Timer0_isr()
{
      
  CLR_PIT0;
   
  PIT_TCTRL0 |= PIT_TCTRL_TEN_MASK; //计时器使能
}

void DMA_CH1_Handler()
{
    DMA_IRQ_CLEAN(DMA_CH1);  //清除通道传输中断标志位(这样才能再次进入中断)
      
    DMA_DIS(DMA_CH1);        //采集完H个数据后进入这个DMA中断,停止DMA传输。行中断中打开DMA传输
   
    if(HREF_count>=240)
    {
        VSYN_flag=1;
    }
}[/mw_shl_code]



回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-24 19:09:33 | 显示全部楼层
Owen 发表于 2017-6-24 18:22
我理解你的意思是在一个I/O口出现上升沿或者下降沿的时候启动DMA开始传输数据。GPIO没有直接的DMA请求信 ...

想问你一下你说的外部中断,具体应该怎么处理呢?下面的是在K60上面的程序


[mw_shl_code=applescript,true]//外部中断服务函数
void PORTC_Interrupt()
{
  if(PORTC_ISFR & (1 << 18))//场中断 //PTC18触发中断
  {
      PORTC_ISFR |= (1 << 18);//写1清中断标志位
      
      HREF_count=0;
      
      VSYN_flag=0;
      
  }
  if(PORTC_ISFR & (1 << 19))//行中断 //PTC19触发中断
  {
      PORTC_ISFR |= (1 << 19);//写1清中断标志位
      
      HREF_count++;
      
      DMA_EN(DMA_CH1);
      
  }
}

//PIT中断服务函数
void Timer0_isr()
{
      
  CLR_PIT0;
   
  PIT_TCTRL0 |= PIT_TCTRL_TEN_MASK; //计时器使能
}

void DMA_CH1_Handler()
{
    DMA_IRQ_CLEAN(DMA_CH1);  //清除通道传输中断标志位(这样才能再次进入中断)
      
    DMA_DIS(DMA_CH1);        //采集完H个数据后进入这个DMA中断,停止DMA传输。行中断中打开DMA传输
   
    if(HREF_count>=240)
    {
        VSYN_flag=1;
    }
}[/mw_shl_code]



回复

使用道具 举报

14

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2017-3-31
在线时间
118 小时
发表于 2017-6-26 08:51:08 | 显示全部楼层
福尔摩木南 发表于 2017-6-24 19:09
想问你一下你说的外部中断,具体应该怎么处理呢?下面的是在K60上面的程序

像素中断的上升沿或者下降沿是什么意思
回复

使用道具 举报

14

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2017-3-31
在线时间
118 小时
发表于 2017-6-26 08:51:19 | 显示全部楼层
福尔摩木南 发表于 2017-6-24 19:09
想问你一下你说的外部中断,具体应该怎么处理呢?下面的是在K60上面的程序

像素中断的上升沿或者下降沿是什么意思
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-4-13
在线时间
16 小时
 楼主| 发表于 2017-6-26 09:17:10 | 显示全部楼层
Owen 发表于 2017-6-26 08:51
像素中断的上升沿或者下降沿是什么意思

是像素信号的上升沿或者下降沿,来触发DMA传输
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 18:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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