OpenEdv-开源电子网

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

如何将dma运用到stm32f103开发板的lcd上?

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-26
在线时间
0 小时
发表于 2015-7-26 20:34:27 | 显示全部楼层 |阅读模式
5金钱
最近在用stm32f103驱动ov7670摄像头(带FIFO),想尝试一下用dma读取直接显示在lcd上,可是在配置dma时发现不知道开启stm32哪一个dma的哪一路通道,原子给的dma通道的资料里没有关于lcd的,望各路大神指点一下!

最佳答案

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

参考我们的ATK-OV2640资料,用了dma传输数据到lcd。 论坛搜索:ATK-OV2640,下载,里面的战舰板参考例程就是。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-26 20:34:28 | 显示全部楼层
参考我们的ATK-OV2640资料,用了dma传输数据到lcd。
论坛搜索:ATK-OV2640,下载,里面的战舰板参考例程就是。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-26
在线时间
0 小时
 楼主| 发表于 2015-7-28 20:01:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我下载看了一下,上面使用的是从sd卡的sram到lcd,可我目前遇到的问题是用stm32f103驱动没有FIFO缓冲区和晶振的ov7670摄像头,我想利用直接对数据端口dma读取(pc0-pc7)然后全部显示在lcd上,可是我查stm32f103的参考资料时发现dma的通道里没有对普通IO操作的,这该怎么办?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-28 22:35:00 | 显示全部楼层
回复【3楼】yy_sunshine99:
--------------------------------
直接存储器到存储器模式 即可
说白了你把GPIO->ODR的地址,当成内存用就完了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-26
在线时间
0 小时
 楼主| 发表于 2015-7-30 09:03:05 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
  while(1) 
    {
//  OV7670_Light_Mode();
        TimerCnt = 0;
        temp7670 = 0;
        CLK_init_ON(); // OV7670 XCLK 开
        while(value & 0x0800)    value = GPIOC->IDR;   // Vsync=H    
        while((~value) & 0x0800) value = GPIOC->IDR;   // Vhync=L 
        
        CLK_init_OFF(); //OV7670 XCLK 关
while(TimerCnt < 76800)
        {
XCLK_L;     //  GPIOA->BRR =   GPIO_Pin_8; 为0或1
            XCLK_H;    // GPIOA->BSRR =  GPIO_Pin_8;   端口复位寄存器   为0
value = GPIOC->IDR;
temp7670 ++;
            
if(value & 0x0100) // HREF = H ||(LCD_PCLK_STATE)
            {
    //value = GPIOC->IDR;
    //display[TimerCnt]=value; 
  
   if((temp7670 == 1))// 高字节||(value & 0x0200) ||(LCD_PCLK_STATE) 
                {
                   val1=value& 0x00ff;

                }
                else // 低字节  if((temp7670 != 1)||(LCD_PCLK_STATE))  
                {
                    val2= value<<8  ;   //
val =ili9320_BGR2RGB(val1 |val2);
                    temp7670 = 0;
                    LCD_WriteRAM(val); //TFT GRAM 数据
                    TimerCnt ++;
                }
            } 


}
初始化成功之后我采用上面的代码直接读gpioc的值来采像素点,可是lcd还是没有图像显示,我的代码有什么问题吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-30 20:53:39 | 显示全部楼层
回复【5楼】yy_sunshine99:
---------------------------------
得你自己调试哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 06:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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