您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> Blackfin入门教程---BF53x_GPIO
本帖共有2837个阅读者
发表帖子 发表投票 回复主题
Blackfin入门教程---BF53x_GPIO
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Blackfin入门教程---BF53x_GPIO

接口功能介绍

ADSP-BF53x处理器上有16个Programmable Flag接口,简称PF接口,这些接口就是通常所有的IO接口,通过寄存器配置,可以输出电平和感知接口电平,每一个PF接口都可以作为外部中断接口。

在单片机上,通常如果设置一个IO接口输出时,直接将输出信号值付给该接口,如果作为输入时,直接通过该接口读取即可。Blackfin处理器的IO使用与单片机不同,在使用前必须对该接口进行初始化,如告知接口的方向,如配置为输出接口,则直接配置输出接口电平信号,如配置为输入接口,需打开输入使能开关,配置输出信号触发方式,是否中断触发,是否双极性触发等等。初始化完成后,才能使用PF接口。

接口寄存器说明

PF接口主要寄存器功能与使用方法



PF寄存器

功能

FIO_FLAG_D

数据寄存器:通过该寄存器写入值设置接口电平和读取该寄存器值获取接口电平

FIO_FLAG_C

清楚标志位寄存器:将该寄存器内写1,相对应的PF管脚被清楚,电平置为0。写0则无效

FIO_FLAG_S

设置标志位寄存器:将该寄存器内写1,相对应的PF管脚被设置,电平置为1。写0则无效

FIO_MASKA_D

中断屏蔽数据寄存器A:设置PF管脚是否使用中断功能,写1则使用中断,写0则关闭中断

FIO_MASKA_C

中断屏蔽清楚寄存器A:清楚PF管脚的中断功能,写1则对应管脚关闭中断,写0则无效

FIO_MASKA_S

中断屏蔽设置寄存器A:设置PF管脚的中断功能,写1则对应管脚使用中断,写0则无效

FIO_MASKB_D

中断屏蔽数据寄存器B:设置PF管脚是否使用中断功能,写1则使用中断,写0则关闭中断

FIO_MASKB_C

中断屏蔽清楚寄存器B:清楚PF管脚的中断功能,写1则对应管脚关闭中断,写0则无效

FIO_MASKB_S

中断屏蔽设置寄存器B:设置PF管脚的中断功能,写1则对应管脚使用中断,写0则无效

FIO_DIR

方向设置寄存器:写1则对应管脚为输出,写0则对应管脚为输入

FIO_POLAR

极性设置寄存器:写1则0电平触发或下降沿触发,写0则高电平触发或上升沿触发

FIO_EDGE

沿触发寄存器:写1则对应管脚设置为沿触发,写0则对应管脚设置为电平触发

FIO_BOTH

双沿设置寄存器:写1则对应管脚设置为双沿触发,写0则对应管脚设置为单沿触发

FIO_INEN

输入使能寄存器:写1则对应管脚使能输入功能,写0则对应管脚关闭输入功能

例子代码分析

输入接口配置:

       将PF0接口配置为输入接口,并且读出接口电平状态。

       *pFIO_DIR &= ~PF0;          //设置PF0为输入

       *pFIO_INEN |= PF0;           //输入使能

       i = *pFIO_FLAG_D;            //读取数据

输出接口配置:

       将PF0接口配置为输出接口,使用两种方式设置PF0输出高低电平。

       *pFIO_DIR |= PF0;                     //设置PF0为输出

    *pFIO_FLAG_S |= PF0;    //PF0脚置高

    *pFIO_FLAG_C |= PF0;       //PF0脚置低

    *pFIO_FLAG_D |= PF0;    //PF0脚置高

    *pFIO_FLAG_D &= ~PF0;   //PF0脚置低

代码实现功能

工程BF53x_GPIO_IN.dpj实现了读取PF0接口状态并打印出PF接口状态数据。

工程BF53x_GPIO_OUT.dpj实现了通过PF0接口不断的输出高低变化的电平。

测试结果

工程BF53x_GPIO_IN.dpj:运行代码后将PF0接口的电平状态打印在VDSP上。

工程BF53x_GPIO_OUT.dpj: 运行代码后PF0将不断变换高低电平。


上传的附件
   20116819444152.rar [ 300.54 KB ]


上传的附件
   20116819445952.rar [ 286.93 KB ]


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/6/8 19:47:57
杀手之王(论坛新手)
杀手之王
头衔:社区公民
帮派:无帮无派
帖数:1
金钱:105
积分:1
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
学习了,我只会51单片机,貌似DSP很复杂啊,很想学,不知道有没有好的方法。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/8 20:14:58
DSP菜鸟(论坛新手)
DSP菜鸟
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:120
积分:4
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我刚刚开始学,刚接触确实有点难,找到方法就好了,支持初级教程!


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/8 20:16:26
open_gg(论坛新手)
open_gg
头衔:社区公民
帮派:无帮无派
帖数:40
金钱:394
积分:41
注册时间:2011/6/22
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
mark


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/7/14 15:41:23
fengzheng(论坛新手)
fengzheng
头衔:社区公民
帮派:无帮无派
帖数:6
金钱:127
积分:5
注册时间:2011/10/19
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
接触了 好长时间也没有真正入门 不知到从那入手了

呵呵
等级:论坛新手 参考IP地址:*.*.*.*
2011/10/19 8:43:41
尊贵身份标志
夜色飘摇(论坛版主)
夜色飘摇
头衔:社区公民
帮派:无帮无派
帖数:350
金钱:1773
积分:332
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
有时候会豁然开朗的!把DSP先当一个拥有不错的运算能力的单片机

我要成为勇敢的海上战士!
等级:论坛版主 参考IP地址:*.*.*.*
2011/10/19 11:45:20
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159300 Call, 1 Queries, Processed in 0.015625 second(s),