DCMI 接口DMA 传送数据问题
最近在学习 DCMI接口 通过DMA将DCMI接口中的数据传送到内存中的一个数组中,DCMI 和 DMA都有自己的中断入口,DCMI有行同步中断 和帧同步中断,这两个中断都可以自动进入,但DMA2的传送完毕中断就是进不去,我知道DCMI中有个函数可以置位CAPTURE位,这个位可以通知DMA起动传送,我置为了可DMA2的中断就是没响应!
void DCMI_Config(void)
{
DCMI_InitTypeDef DCMI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
//使能DAMI 的GPIO时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |
RCC_AHB1Periph_GPIOC, ENABLE);
//使能DCMI时钟
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
//连接DCMI管脚到AF13功能
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_DCMI);
// DCMI GPIO 配置
// D0..D4(PC6/7/8/9/11)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// D5..D7(PB6/8/9), VSYNC(PB7)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// PCLK(PA6) HSYNC(PA4)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// DCMI 配置
DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;
DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;
DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;
DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
DCMI_Init(&DCMI_InitStructure);
// 配置 DMA2 传输数据从DCMI 到 LCD
// 使能 DMA2 时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
//DMA2 Stream1 配置
DMA_DeInit(DMA2_Stream1);
DMA_InitStructure.DMA_Channel = DMA_Channel_1;
DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;
DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 1;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA2_Stream1, &DMA_InitStructure);
}
你看下这个配置,这是DCMI驱动ov7670的配置
你的DMA中断没有设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
在DMA初始化完成之后把这几句加上,相应的部分要修改。你在试试
DCMI 接口DMA 传送数据问题相关推荐
- postman的批量传送数据和接口关联
一:批量传送数据 1.在本地创建一个文本文档,上面写入我们的数据. ①手机号②key值③返回值 2.在postman里面接受我们的数据,用{{变量名}} 3.因为咱们的手机号和keys值都接收了,那个 ...
- 小新Air15的USB接口只能充电,不能传送数据
小新Air15的右侧有两个usb接口,两个都能传送数据,其中上方的能给外部供电. 问题:在外接usb网口转换器时,发现插上没反应. 解决方案:进设备管理器,将有问题的驱动卸载,然后重启电脑即可 建议: ...
- STM32输入捕获模式设置并用DMA接收数据
参考: STM32的PWM输入模式设置并用DMA接收数据 Input capture mode The input stage samples the corresponding TIx input ...
- 两台主机经过路由器传送数据的网络原理
假设两台主机通过路由器相连. 假定主机1的应用进程AP1向主机2的应用进程AP2传送数据.AP1先将其数据交给本主机的第5层(应用层).第5层加上必要的控制信息H5就变成了下一层的数据单元.第4层(运 ...
- PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)
该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用.实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改 ...
- 五、ADC如何使用DMA采集数据
1.DMA数据搬运工 1.1.DMA简介 1.1.1 .DMA的概念 DMA,全称为:Direct Memory Access,即直接存储器访问.DMA传输方式无需CPU直接控制传输, 也没有中断处理 ...
- STM32的PWM输入模式设置并用DMA接收数据
STM32的PWM输入模式设置并用DMA接收数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.72 MC ...
- php写的接口返回数据的页面,PHP怎么解析 WEBSERVICES接口返回的数据
PHP如何解析 WEBSERVICES接口返回的数据 WEBSERVICE服务器,他们用.net写了个接口 http://XXX.XXX.XXX.XX/Info.asmx?wsdl 我用PHP调用这个 ...
- 使用ViewBag传送数据从控制器至视图
前一篇<ASP.NET MVC读取XML并使用ViewData显示>http://www.cnblogs.com/insus/p/4308740.html 中,在控制器中使用了ViewDa ...
- Statement接口实现查询数据、添加数据
本文介绍了Statement接口实现查询数据.添加数据.在JDBC的基本应用中,介绍了使用Statement接口查询和添加数据的步骤.重点在于使用getConnection()方法来连接数据库,创建S ...
最新文章
- poj1129Channel Allocation
- 【Ethereum】以太坊ERC20 Token标准完整说明
- Docker监控方案(TIG)的研究与实践之Influxdb
- c++ map 函数
- kylin: build cube Hbase: Region Server 意外退出
- python基础之字符串定义常见操作、列表定义进阶操作
- OpenEuler系统是什么
- GARFIELD@05-02-2005
- NPAPI中返回一个字串的正确做法
- MATLAB—隐函数绘图
- echarts 柱状图颜色及渐变色设置
- APP登录界面UI设计欣赏
- 计算机网络技术在实践中应用,计算机网络技术及在实践中的具体应用
- Wireshark抓包及常用过滤方法
- 飞机一般是什么操作系统?
- 安装客户端出现More information at://nsis.sf.net/nsis_error
- java执行sql列名无效_sqlserver列名无效调试及解决方法
- 封闭式基金最新折价率排行(20060922)[ZT]
- SpringBoot+vue3对接支付宝支付详细教程
- Latex 固定图片的位置