ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)

article/2025/11/6 18:46:39

我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧。

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述

接口功能介绍

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

在单片机上,通常如果设置一个 IO 接口输出时,直接将输出信号值付给该接口,如果作为输入时,直接通过该接口读取即可。

而Blackfin 处理器的 IO 使用与单片机不同,在使用前必须对该接口进行初始化,如告知接口的方向,如配置为输出接口,则直接配置输出接口电平信号,如配置为输入接口,需打开输入使能开关,配置输出信号触发方式,是否中断触发,是否双极性触发等等。初始化完成后,才能使用 PF 接口。

接口寄存器说明

在这里插入图片描述

核心代码分析

输入接口配置:

将 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 接口不断的输出高低变化的电平。

完整源码展示

这里有两个工程,一个工程是IN,一个工程是OUT:

IN:

#include <cdefBF533.h>

#define pDEVICE_OE (volatile unsigned short *)0x20320000
#define PF0_SET 0x40

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void Init_PF0_IN(void)
{
*pFIO_DIR &= ~PF0;
*pFIO_INEN |= PF0;
}

void Set_CPLD(void)
{
*pDEVICE_OE &= ~PF0_SET ; //设置CPLD释放PF0接口
}

void main(void)
{
int i;

Set_PLL(16,4);
Init_EBIU();	
Init_SDRAM();Set_CPLD();	
Init_PF0_IN();
while(1)
{i = *pFIO_FLAG_D;printf("PF data is %d\n",i); 	
}

}

OUT

#include <cdefBF533.h>

#define pDEVICE_OE (volatile unsigned short *)0x20320000
#define PF0_SET 0x40

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void Init_PF0_OUT(void)
{
*pFIO_DIR |= PF0;
}

void Set_CPLD(void)
{
*pDEVICE_OE &= ~PF0_SET ; //设置CPLD释放PF0接口
}

void main(void)
{
int i;

Set_PLL(16,4);
Init_EBIU();	
Init_SDRAM();Set_CPLD();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脚置低      	 
}

}

关于ADI的DSP GPIO的原理以及源代码有任何问题均可以随时问我,本人很懂。


http://chatgpt.dhexx.cn/article/IwdqpIeJ.shtml

相关文章

Protobuf 简介

protobuf (protocol buffer) 是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化)&#xff0c;用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。通常说的protobuf包括以下三点&#xff1a; 是一种二进制数据交换格式。支持不…

【prony】基于prony算法的参数辨识matlab仿真

1.软件版本 matlab2013b 2.系统概述 建立如下被测信号: 被测信号中包含四个振荡模态,在数据窗宽度同样为10s的前提下,利用不同的采样频率做普罗尼计算。结果如表1所示。根据公式的基本表达式: 所以最后,进行估计得到的参数为:

ADI Blackfin DSP处理器-BF533的开发详解54:CVBS输出-DSP和CH7024的应用详解(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS OUT 视频输出 硬件实现原理 CVBS_OUT 子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT3 和 PORT4 上&#xff0c;板卡插入时&#xff0…

【AI+】Martin Fowler: 基于 AI 辅助的测试驱动开发的技术 | An example of LLM prompting for programming

Martin Fowler: 基于 AI 辅助的测试驱动开发的技术 | An example of LLM prompting for programming 目录 Martin Fowler: 基于

iPhone 13分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 13 Pro、iPhone 13 Pro Max、iPhone 13 mini

点击图片放大查看 iPhone 14分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 14 Plus、iPhone 14 Pro、iPhone 14 Pro Max​​​​​​​

android 主流分辨率是多少,android 屏幕分辨率问题

iPhone的icon设计就这么简单&#xff0c;iPhone的屏幕只有320480像素&#xff0c;所以程序没有适配性问题。 Android 在研究Android的icon设计之前&#xff0c;有必要先了解Android的界面是如何适配多样化屏幕的。 适配性 由于同一个UI元素(如100100像素的图片)在高精度的屏幕上…

iPhone手机屏幕大小及分辨率

以前一直找,现在自己保存起来

IPHONE屏幕大小,分辨率解析

相关概念 // 竖屏时,返回的是不带有状态栏的Rect.横屏时,返回整个屏幕Rect [UIScreen mainScreen].applicationFrame);//The natural scale factor associated with the screen(自然比例因子) [UIScreen mainScreen].scale);//The native scale factor for the physical scree…

iPhone 各屏幕尺寸及解析

一.iPhone 各屏幕尺寸表 手机型号屏幕尺寸(inch)像素密度&#xff08;PPI&#xff09;逻辑分辨率 &#xff08;point&#xff09;物理分辨率&#xff08;屏幕分辨率&#xff09;&#xff08;pixel&#xff09;缩放因子&#xff08;scale factor&#xff09;宽高比&#xff08;…

各版本iPhone屏幕分辨率尺寸图标

1、3.5&#xff08;iPhone 4、iPhone 4s&#xff09;&#xff1a; 640x960 2、4.0&#xff08;iPhone 5、iPhone 5s、iPhone 5C、iPhone SE&#xff09;&#xff1a; 640x1136 3、4.7&#xff08;iPhone 6、iPhone 6s、iPhone 7、iPhone 8&#xff09;&#xff1a; 750x1334&…

各型号iPhone的屏幕参数 逻辑分辨率 物理分辨率 - iOS Device Display Summary - 更新到iPhone 13系列

详询&#xff1a; iOS设备分辨率 - 逻辑分辨率 - 屏幕参数 - iPhone/iPad/iWatch without Macbookhttps://tools.rudon.cn/electronics/resolution/ios/

EditPlus中文版 安装教程

EditPlus中文版安装教程 1、下载软件压缩包,解压即可。不需要安装,解压后打开“EditPlus中文版”文件夹(软件我会打包好,在文中的最低端找到即可下载;若链接失效了,请告知我一声,我会重新更新链接) 2.打开EditPlus.exe启动软件。 3、设置程序的配置文件目录。 …

安装Editplus软件

1.安装Editplus软件 百度云网盘链接:https://pan.baidu.com/s/1alKZWD_yXUO4be6wUoM5Fg?pwdhykz 提取码:hykz 2.点开下载的软件进行安装&#xff0c;Accept下一步 3.选择自己想要安装的文件目录 4.点击Start Copy进行下一步安装&#xff0c;安装完成后桌面会有Editplus的软件…

EditPlus 5.0.651 中文版

各位网友&#xff1a;4.0 版本以前的注册码在新版本&#xff08;5.0&#xff0b;&#xff09;不再有效&#xff01; EditPlus 是一个著名的代码文本编辑器。目前网上有其他人翻译的版本&#xff0c;但均存在零星的翻译错误。为此&#xff0c;我重新汉化了 EditPlus 的界面。 …

EditPlus4.0汉化+破解注册

1.官网下载并安装EditPlus软件包 https://www.editplus.com/download.html 2.下载官方推荐汉化程序&#xff0c;选择对应版本号 http://www.cnblogs.com/hanzisearcher/archive/2012/09/14/editplus.html 3.将解压缩得到的汉化文件“editplus.exe”直接覆盖至editplus安装目录…

强大的editplus 5.7

EditPlus是一款由韩国 Sangil Kim &#xff08;ES-Computing&#xff09;出品的小巧但是功能强大的可处理文本、HTML和程序语言的Windows编辑器&#xff0c;你甚至可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。 EditPlus&#xff08;文字编辑器&#xff0…

EditPlus 5.0 激活+汉化

EditPlus5.0注册码 注册名 Vovan 注册码 3AG46-JJ48E-CEACC-8E6EW-ECUAW EditPlus5.0汉化 各位网友&#xff1a;4.0 版本以前的注册码在新版本&#xff08;5.0&#xff0b;&#xff09;不再有效&#xff01; EditPlus 是一个著名的代码文本编辑器。目前网上有其他人翻译的版本&…

Editplus下载安装

Editplus简介 Editplus是一款很受欢迎的编辑器。简单的解释editplus软件的话&#xff0c;它就是一款功能更强大的记事本。除了普通的文本编辑之外&#xff0c;还有很多的其他特点。 默认支持HTML、CSS、PHP、ASP、Perl、C/C、Java、JavaScript和VBScript等语法高亮显示&#x…