qianzeqi 发表于 2012-8-1 20:53:37

求助:关于51单片机与dma技术。求大神指教

我打算把dma技术加在51上。dma芯片用8237a-5.但是当我在dreq端输入信号后,dma的hrq端并无反应。
#include<reg52.h>
sbit IOW=P1^0;
sbit CS=P1^1;
sbit DREQ=P1^2;
void dma_init()
{
        P2=0X0D;
        P0=0X00;

        P2=0X00;
        P0=0X00;
        P2=0X00;
        P0=0X00;
       
        P2=0X01;
        P0=0XFF;
        P2=0X01;
        P0=0X00;
       
        P2=0X0B;
        P0=0X14;
       
        P2=0X0A;
        P0=0X00;
       
        P2=0X08;
        P0=0X00;       
}
main()
{
        IOW=0;
        CS=0;
        DREQ=0;
        dma_init();
        DREQ=1;
        //CS=1;
        while(1)
        {
                //DREQ=~DREQ;
                //if()
        }
       
}
这个是测试程序,我觉得这样hrq端就应该是高电平了,可是没有

bbs2009 发表于 2012-8-1 21:19:37

learner123 发表于 2012-8-1 22:29:19

基本的8237时序都不对

kmani 发表于 2012-8-2 03:45:24

learner123 发表于 2012-8-1 22:29 static/image/common/back.gif
基本的8237时序都不对

大神,我想学习STM32F4,现在不知道从哪里下手,希望你能指导下。随便说几句都行,就是想知道怎么入门.....先谢谢了,我的基础是会用一点51。
我在网上收集了好多资料,但是还是没搞清楚从哪儿下手。

learner123 发表于 2012-8-2 11:58:47

初学者先跑例程,stm32f4也有。
dma与adc的例子
dma和uart的例子先看看
不急着自己写,看懂了编程的思路再说。然后看库如何实现,看硬件的寄存器即可。这时候基本可以自己动手了。

当然这个过程还是要自己慢慢整,很多c语言的非课本语法也要自己慢慢查

learner123 发表于 2012-8-2 12:00:16

顺便说一句,如果搞dma也可以在pc上搞,比如在虚拟机上装个dos,然后也可以玩dma,当然只能用于学习,不能实用

wallelectronics 发表于 2012-8-2 12:07:47

51?DMA?我没看错??

qianzeqi 发表于 2012-8-2 14:53:16

算了,我放弃在51上搞dma了

qianzeqi 发表于 2012-8-2 14:57:33

不过楼上说我时序错了。。哪错了。初始化错了吗,如果初始化没错,那么初始化结束后,有dreq信号来,hrq端就应该会置高

qianzeqi 发表于 2012-8-2 14:58:28

learner123 发表于 2012-8-1 22:29 static/image/common/back.gif
基本的8237时序都不对

哪错了。初始化错了吗,如果初始化没错,那么初始化结束后,有dreq信号来,hrq端就应该会置高

learner123 发表于 2012-8-2 15:21:29

看看intel的8237A的数据手册,你写时序错误

qianzeqi 发表于 2012-8-2 20:51:37

learner123 发表于 2012-8-2 15:21 static/image/common/back.gif
看看intel的8237A的数据手册,你写时序错误

写时序没错吧。cs,iow为低,然后先送地址,再送数据
页: [1]
查看完整版本: 求助:关于51单片机与dma技术。求大神指教