求助:关于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端就应该是高电平了,可是没有 基本的8237时序都不对 learner123 发表于 2012-8-1 22:29 static/image/common/back.gif
基本的8237时序都不对
大神,我想学习STM32F4,现在不知道从哪里下手,希望你能指导下。随便说几句都行,就是想知道怎么入门.....先谢谢了,我的基础是会用一点51。
我在网上收集了好多资料,但是还是没搞清楚从哪儿下手。 初学者先跑例程,stm32f4也有。
dma与adc的例子
dma和uart的例子先看看
不急着自己写,看懂了编程的思路再说。然后看库如何实现,看硬件的寄存器即可。这时候基本可以自己动手了。
当然这个过程还是要自己慢慢整,很多c语言的非课本语法也要自己慢慢查 顺便说一句,如果搞dma也可以在pc上搞,比如在虚拟机上装个dos,然后也可以玩dma,当然只能用于学习,不能实用 51?DMA?我没看错?? 算了,我放弃在51上搞dma了
不过楼上说我时序错了。。哪错了。初始化错了吗,如果初始化没错,那么初始化结束后,有dreq信号来,hrq端就应该会置高 learner123 发表于 2012-8-1 22:29 static/image/common/back.gif
基本的8237时序都不对
哪错了。初始化错了吗,如果初始化没错,那么初始化结束后,有dreq信号来,hrq端就应该会置高 看看intel的8237A的数据手册,你写时序错误 learner123 发表于 2012-8-2 15:21 static/image/common/back.gif
看看intel的8237A的数据手册,你写时序错误
写时序没错吧。cs,iow为低,然后先送地址,再送数据
页:
[1]