注册 登录
查看: 396|回复: 6

[K60] 摄像头无线调试程序中图像dma采集和i2c通讯起了冲突

[复制链接]
发表于 2014-3-17 11:02:26 | 显示全部楼层 |阅读模式
问题是出在摄像头无线调试中
i2c使用的是i2c0通道,端口是D8,D9引脚。      i2c用于加速计8451通信。
i2c通讯程序放在PIT1中,在程序调试中进入不了图像采集dma中断
void DMA0_IRQHandler()
{
    camera_dma();
}
但是只要把iic通信程序注释掉之后,图像dma采集就可以正常进行。
在直立与摄像头控制程序中。dma与i2c没有问题。
放在无线调试中dma与i2c出现冲突。当PIT1定时中断中存在i2c通讯时,图像dma采集中断就不能正常运行。
中断优先级已经配置
    NVIC_SetPriority(PORTA_IRQn,0);         //配置优先级
    NVIC_SetPriority(PORTE_IRQn,1);         //配置优先级
    NVIC_SetPriority(DMA0_IRQn,2);          //配置优先级
    NVIC_SetPriority(PIT0_IRQn,4);          //配置优先级
    NVIC_SetPriority(PIT1_IRQn,3);          //配置优先级。
希望大神么能给点建议。找了一晚上也没找出问题出在哪。只知道只要把PIT1中断中的i2c通讯注释掉就可以正常的图像采集。
回复

使用道具 举报

发表于 2014-3-17 11:07:57 | 显示全部楼层
这问题,太奇葩了吧,他们的IO口有没有冲突?

试下降低摄像头的帧率看看
回复 支持 反对

使用道具 举报

发表于 2014-3-17 11:34:44 | 显示全部楼层
I2C是寄存器操作,DMA需要读取GPIO的数据,难道是寄存器总线有冲突?
试下把摄像头的帧率降低看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-17 13:20:37 | 显示全部楼层
栾端静 发表于 2014-3-17 11:34
I2C是寄存器操作,DMA需要读取GPIO的数据,难道是寄存器总线有冲突?
试下把摄像头的帧率降低看看

昨天晚上都调过了,不行。
dma和i2c没直接冲突。加上nrf无线传输程序就不行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-17 13:21:04 | 显示全部楼层
栾端静 发表于 2014-3-17 11:34
I2C是寄存器操作,DMA需要读取GPIO的数据,难道是寄存器总线有冲突?
试下把摄像头的帧率降低看看

昨天晚上都调过了,不行。
dma和i2c没直接冲突。加上nrf无线传输程序就不行了
回复 支持 反对

使用道具 举报

发表于 2014-4-12 22:12:08 | 显示全部楼层
楼主你的问题解决没???我的也是,IIC放在PIT中断函数里面的话图像采集不完,后半场有固定的20行无法采集到
回复 支持 反对

使用道具 举报

发表于 2014-4-12 22:16:26 | 显示全部楼层
JoyWu 发表于 2014-4-12 22:12
楼主你的问题解决没???我的也是,IIC放在PIT中断函数里面的话图像采集不完,后半场有固定的20行无法采集 ...

可以考虑避开一下,PIT里等待 图像传输完成才进行i2c传输。
回复 支持 反对

使用道具 举报

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

本版积分规则

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