• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 数据总线驱动OLED方案,但接上后蜂鸣器怎响过不停 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
楼主  发表于: 2008-11-25 21:49

 数据总线驱动OLED方案,但接上后蜂鸣器怎响过不停

我想用数据总线驱动OLED,但接上后蜂鸣器怎响过不停,是怎么回事呀?

QQ2440                                      OLED

nGCS1                                        CS          OLED片选
LnOE                                            RD          读
LnWE                                          WR          写
nRESET                                      REST      复位引脚
LADDR0                                      D/C        数据寄存器/命令寄存器选择引脚
LDATA0~LDATA7                      D0~D7  0~7数据线
GND                                            GND        接地

TFT选择脚引出一个3.3V          VDD    3.3V


我就接了这些引脚,蜂鸣器一直响,NOR启动的,超级终端也没见VIVI的菜单出现,这是怎么回事呀?能帮我解答一下吗?谢谢!
[ 此贴被maidilong在2008-11-26 02:14重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2008-11-25 22:16
你应该是把控制蜂鸣器的GPIO拉成有效了,这是QQ2440v3的原理图


"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
2楼  发表于: 2008-11-26 00:00
我什么也还没有动,程序也还没往里送,就只做了一步,把总线和OLED接上,加电,就这样了
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
3楼  发表于: 2008-11-26 00:42
版主我看网上好少有人用QQ2440写普通LCD或OLED的,我现在想搞一个,但遇到麻烦,让帮帮忙,也让大家学习学习,

请版看看我的程序有没有问题,这个OLED程序是我在51单片机上点亮过的,现在修改过来用在ARM上试试,请指教,谢谢!!



#include "def.h"
#include "option.h"
#include "2440addr.h" 
#include "2440lib.h"
#include "2440slib.h"


#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define pageadd  0xb0
#define coladd  0x00
#define contrast 0xb0    //OLED对比度全局变量


#define data    (*(volatile unsigned *)0x40000001)      //OLED数据寄存器地址  我用的是nGCS1,地址是0x40000000,
                                                  但我的D/C也接上了地址线LADDR0,高电平时选中数据寄存器
                                                  所以最后的地址是0x40000001

#define com    (*(volatile unsigned *)0x40000000)      //OLED命令寄存器地址   
                                                  底电平时选中命令寄存器
                                                  所以最后的地址是0x40000000


#define BWSCON    (*(volatile unsigned *)0x48000000)    //ARM位宽寄存器地址
#define BANKCON    (*(volatile unsigned *)0x48000008)    //BANK寄存器地址

void write_com(uchar command);    //写命令进OLED
void write_dat(uchar dat);        //写数据进OLED
void port_init(void);//初始化OLED
void delay(uchar delay_temp);//延时函数
void QQ2440_init();//初始化ARM9


int Main()
{
       
        QQ2440_init();//ARM9初始化
        OM_reset();    //OLED复位
        port_init();  //OLED初始化              
       
        while(1)
          {
            disp_full();//OLEDÈ全屏显示
      delay(0xff);延时
            }



}




void QQ2440_init()//ARM9初始化
{
 
    BWSCON=BWSCON&0xffffff0f;//设置数据总线位宽为8位
    BANKCON=0x0700;
}


void port_init(void)//OLED初始化函数
{
   
  内容略
 
}
         

write_com(uchar command)//写命令进OLED函数
{

  com=command;
   
}


write_data(uchar dat)//写数据进OLED函数
{

  data=dat;
   
}


void disp_full()//OLEDÈ全屏显示函数
{
  uchar i,j;
  for(i=0;i<8;i++)
      {
        write_com(pageadd+i);
        write_col(coladd);
      for(j=0;j<132;j++)
        {
          write_data(0xff);
        }
      }
}

void delay(uchar delay_temp)//延时函数
{
    uchar i,j;
    for(i=0;i<delay_temp;i++)
    {
        for(j=0;j<255;j++);
    }
}



void OM_reset()//OLED复位函数{
  res=1;
  delay(10);
  res=0;
  delay(10);
  res=1;
  delay(100);
}
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2008-11-26 10:29
引用第2楼maidilong于2008-11-26 00:00发表的  :
我什么也还没有动,程序也还没往里送,就只做了一步,把总线和OLED接上,加电,就这样了

量一下你板子上控制蜂鸣器的GPIO电平就知道了
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2008-11-26 11:23
至于没有看到vivi,那可能是因为vivi对Memroy Controller BANK1的初始化和实际的硬件连接(OLED)不符合造成的,既然你已经有了ADS工程,建议你先用AXD + 2440test这样的环境调试吧
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
6楼  发表于: 2008-11-26 15:38
好!我就用AXD + 2440test这样的环境调试看看!!


我再问一下,

按我的想法,我对ARM的初始化没错吧?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2008-11-26 16:12
是的, QQ2440_init()里面对于BANK1的初始化逻辑应该没有错。但ARM9不是51单片机,光有这个函数是不够的,ARM9的初始化还是要靠2440test里面的2440init.s完成,你可以把这些代码整合到工程的Main.c或者干脆替换掉它
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
8楼  发表于: 2008-11-26 23:11
版主,首先很感谢你的回贴,对此表示敬意!

但我笨,学ARM的日子不多,不明白你说的意思?不懂怎样把代码整合到工程的main.c,或者干脆替换掉它,不懂怎样操作?我不太懂你的意思,只能怪我水平太低了,很多书也没有这方面的内容,还望版主再指教!我为了试验QQ2440能通过总线方式驱动OLED,我买了两三片OLED屏,身边好多人说arm是不能点亮普通LCD或OLED,但我不信,我一定要点亮他,版主请指教具体点,等我点亮OLED后,我将多余的OLED送你,一个2.7寸绿色的,一个1.7寸26K全彩色。我就是不想让别人说我的想法是徒劳的,给我一个例子,或我弄通怎样使用ARM的总线,以后我能弄的事就多了,真的很想学会
级别: 侠客
UID: 709
精华: 1
发帖: 88
金钱: 595 两
威望: 131 点
综合积分: 196 分
注册时间: 2008-05-18
最后登录: 2018-02-08
9楼  发表于: 2008-11-26 23:57
我在光盘里找到了2440test里面的,我试试看
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go