ADSP-BF533 GPIO初试

原文地址::http://www.analogcn.com/Article/wz3/201201/20120107043703.html

 

 

最近由于一些事一直没什么时间静下心来学ADSP,今天比较有空,学了一下ADSP的GPIO口的控制,下面我的学习理解,呵呵,仅供参考。

ADSP-BF531处理器上有16 个Programmable Flag 接口,简称PF接口,这些接口就是通常所有的IO接口,跟51单片机的IO口类似,通过寄存器配置,可以输出电平和感知接口电平,比较特殊的是,它的每一个PF 接口都可以作为外部中断接口。

在51单片机上,通常如果设置一个IO接口输出时,直接将输出信号值付给该接口,如果作为输入时,直接通过该接口读取即可。Blackfin 处理器的IO使用与单片机略有不同,在使用前必须对该接口进行初始化,如告知接口的方向,假如配置为输出接口,则直接配置输出接口电平信号,假如配置为输入接口,需打开输入使能开关,配置输入信号触发方式,是否中断触发,是否双极性触发等等。初始化完成后,才能使用PF 接口。其实大家如果有用过AVR单片机的,就会比较容易理解一点,AVR单片机的IO口初始化也是要设置方向等属性的,但是就没有ADSP这么复杂。

感觉还是用通过实例来学习比较快,下面是通过ADSP的GPIO口来控制IO电平输出的一个实例:

void init_PF0_OUT(void)

{    *pFIO_DIR |= PF0;    }

void main(void)

{

    int i;

    Set_PLL(16,3);     

    init_PF0_OUT();

    while(1){

        *pFIO_FLAG_S |= PF0; 

       *pFIO_FLAG_C |= PF0;   

        *pFIO_FLAG_D |= PF0;   

       *pFIO_FLAG_D &= ~PF0;    

}}

假如上面的程序是单片机的IO口控制程序,看到这么多寄存器的设置,我们首先一般是先查找寄存器的作用以及各个位对应的功能,只有熟悉了,才能进行应用。如下图就是从网上找到的资料:PF接口主要寄存器作用:

 

我又找了ADSP-BF533的DATASHEET,但是却发现在PDF文档中找不到上面所说的寄存器的具体定义,觉得很奇怪,像以前单片机的寄存器都是在DATASHEET里面就有非常详细的说明的,找不到寄存器的具体定义,很难继续学习下去,于是我就在网上搜索资料,还有跟一些之前学习过ADSP的人交流一下,最后终于被我发现寄存器的踪迹,原来它就藏身于我们的软件编译器---VisualDSP++的Help里面,如下图:

 

在HELP里面,我们可以找到ADSP-BF533 Hardware Reference这一项,点开这一项,可以在里面找到下面的界面:

 

呵呵,在Programmable Flag Registers (MMRs) 里面就可以看到所有关于IO口的寄存器的具体定义啦,就以FIO_DIR Register 为例,如下图就是该寄存器的具体定义:

 

通过上面的说明,我们可以知道FIO_DIR是一个16位的读写寄存器,每一个位控制一个PFx的IO口。当PFx被设置为1时,对应的端口被设置为输出;当PFx被设置为0时,对应的端口被设置成输入端口。而且该寄存器的复位值为0x0000,标志所有的IO口在复位时都会被设置成输入属性。
我们可以继续查找其他寄存器的内容,对照寄存器的各个位的说明,我们可以对一开始的程序进行以下的解释:
 

 

void init_PF0_OUT(void)

{

    *pFIO_DIR |= PF0; //设置PF0口的端口方向为输出:设置为1表示输出,为0表示输入

}

void main(void)

{

    int i;

    Set_PLL(16,3);   //设置系统运行速度,25MHZ*16/3=133MHZ    

    init_PF0_OUT();

    while(1){

        *pFIO_FLAG_S |= PF0;    //对设置寄存器置位:PF0脚置高

       *pFIO_FLAG_C |= PF0;    //对清除寄存器置位:PF0脚置低

        *pFIO_FLAG_D |= PF0;    //对数据寄存器设置:PF0脚置高

       *pFIO_FLAG_D &= ~PF0;   //对数据寄存器设置:PF0脚置低     

}}

 

现在看起来是不是好解析很多呢,我们再把程序下载到芯片中去,通过示波器就能看到PF0口在不断地电平高低变化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值