上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
BF561开发板的LED灯实验教程-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
BF561开发板的LED灯实验教程
[ 作者:OP ] [ 来源:ADSP开源社区 ] [ 发布时间:2015-12-2 ]

1. BF561开发板的LED灯实验教程
跑马灯是最简单的例程,我们来看一下BF561是如何实现的。

1. 实验名称:

数码管和LED实验

2. 实验目的:
学习LED驱动原理,学习ADSP-BF561处理器利用CPLD的I/O资源,扩展数码管和LED接口的设计方法及程序设计

3. 实验设备:

ADSP-BF561-EZKIT开发板,ADSP-EDU-BF561扩展板

4. 实验原理


l  内容:利用ADSP-BF561处理器EBIU(外部总线接口单元)与CPLD的无缝连接,
通过对异步Bank3的写操作,从而实现数码管和LED的程序控制。
l  原理:利用CPLD做一个LED控制器,用于动态扫描LED的显示。通过BF561的EBIU接口控制LED的显示字符。

开发板上设计了2个数码管和8个LED指示灯。数码管和LED复用数据总线,采用74HC245作为总线驱动芯片。CPLD内部固化了一个LED控制器,控制器采用动态扫描的方式维持LED显示。使用时ADSP-BF561处理器只需通过EBIU接口向CPLD内部的LED控制器送入需要显示的内容,LED控制器会自动将所要显示的数据锁存,并通过扫描维持该数据的显示,直到BF561重新向控制器送入数据信息。
CPLD与ADSP-BF561处理器的内部接口配置 
 

 
LEDCS

  

  
LED_A1

  

  
LED_A0

  

  
pLED_DAT_OUT

  

  
说明

  

  
上升沿

  

  
0

  

  
0

  

  
XX

  

  
数码管0显示数据

  

  
上升沿

  

  
0

  

  
1

  

  
     XX

  

  
数码管1显示数据

  

  
上升沿

  

  
1

  

  
0

  

  
     XX

  

  
LED显示数据

  

  
上升沿

  

  
1

  

  
1

  

  
    保留

  

  
保留

其中pLED_DAT_OUT的数据D0-D7分别对应的数码管的8段a-h。

实验时驱动代码的编写过程要按照以下步骤进行

第一:向pCtrOut_Flag_OE寄存器写入数据,使能驱动器HC245 LED_OE=0。

第二:选择写入地址向pCtrOut_Flag_B对应的LED_A1和LED_A0写入数据。

第三:向pLED_DAT_OUT寄存器写入要显示的参数。

第四:控制pCtrIner_Flag寄存器的LEDCS位,使其产生一个上升沿,此时数据写入相应的寄存器:

pCtrOut_Flag_OE映射的物理地址为:0x20350000

pCtrIner_Flag映射的物理地址为:0x20360000

pCtrOut_Flag_B映射的物理地址为:0x20380000

                pLED_DAT_OUT映射的物理地址为:0x20390000

代码分析:

void
leddisplay(uint8_t LEDNum,uint8_t data)                     

{

switch(LEDNum)

{

case 1:  *pCtrOut_Flag_B
= 0x00;                         break;      // LED_A1=0 LED_A1=0

case 2:   *pCtrOut_Flag_B
= 0x00| LED_A0;                   break;      // LED_A1=0 LED_A1=1

case 3:   *pCtrOut_Flag_B
= 0x00| LED_A1;        break;      // LED_A1=1 LED_A1=1

default: printf("ERROR!\n");                                      break;     

}

*pLED_DAT_OUT =data;                                // 输出显示数据

*pCtrIner_Flag_OE =0x00;                                                                 // LEDCS 位为0

mdelay(10000);                                     

*pCtrIner_Flag_OE =0x04;                                                                 // LEDCS 位为1

}

代码运行结果:

1.       
首先看到8个LED灯循环被点亮。


2.       
数码管显示从99递减到00。

硬件连接原理图:

联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1