硬件准备

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

软件准备

Visual DSP++软件

硬件链接

接口功能介绍

UART(Universal Asynchronous Receiver/Transmitter (UART) port)接口,是全双工通用的串行接口,由 RX 和TX 两根线组成,扩展 RS232 芯片可以直接和计算机串口通讯,通常作为调试用的命令和数据通讯接口。

ADSP-BF533的 UART 接口,除了支持标准串口功能外,还支持 IrDA 模式,在硬件上增加一个红外通讯模块可以进行红外数据传输。

当设置 IrDA 模式后,输出的波形会与原数据相反,且信号宽度变窄,下图是 IrDA 模式下和正常模式下的比较。

UART 接口通讯的波特率配置值可以通过下面公式进行计算:

BAUD RATE = SCLK/(16 x Divisor)

接口寄存器说明

核心代码分析

*pUART_GCTL=0x0009;
*pUART_LCR=0x0080;// DLAB=1 允许访问 DLL 和 DLH
*pUART_DLL=div; //将变量 div 的值写入波特率配置寄存器
*pUART_DLH=div>>8; //DLL DLH 分别赋值
*pUART_LCR=0x0003;// 允许访问 RBR THR 和 IER
*pUART_IER=0x0001;// 接收中断允许
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xf3ffffff; // UART 中断等级设置
*pSIC_IAR2 = 0xffffffff;
register_handler(ik_ivg10, UART_ISR); // 注册 UART 中断等级为 10,标志为 UART_ISR
*pSIC_IMASK = 0x00004000; //使能 UART 中断
*pUART_THR=TXbuf[i]; //向 UART 传输数据寄存器写数据
while(!(*pUART_LSR&0x0020)); //等待传输完成
EX_INTERRUPT_HANDLER(UART_ISR) //UART 接收数据中断函数
{
if(*pUART_LSR&DR) //判断是否有新的数据。
{
if(cont>512) //防止 buff 溢出,测试代码,将接收到的数据重复写入 512 字节的 buff
cont = 0;
RXbuf[cont]=*pUART_RBR; //读取数据
cont++;
}
}

代码实现功能

代码实现了配置波特率为 9600,设定了数据接收中断,运行代码后,会将数组 Txbuf 中的字符串通过串口发送出,当接收到数据后,会进入中断函数读取数据。

完整代码

#include <cdefBF533.h>
#include <sys\exception.h>

unsigned char RXbuf[512];
unsigned char TXbuf[50]={“\nTest UART in ADSP-EDU-BF53x Board\r\n\n”};

int cont;

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

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

void Set_PLL(int pmsel,int pssel)
{
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 UARTinit(unsigned int rate,unsigned int system_clk)
{
unsigned int div;
div = system_clk/rate/16;

*pUART_GCTL=0x0009;
*pUART_LCR=0x0080;         // DLAB=1 允许访问DLL 和DLH
*pUART_DLL=div;
*pUART_DLH=div>>8;           //DLL DLH分别赋值
*pUART_LCR=0x0003;         //允许访问 RBR THR 和IER
*pUART_IER=0x0001;         //接收中断允许

}

EX_INTERRUPT_HANDLER(UART_ISR)
{
if(*pUART_LSR&DR) //判断是否有新的数据。
{
if(cont>512) //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
cont = 0;
RXbuf[cont]=*pUART_RBR;
cont++;
}
}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xf3ffffff; // UART 中断等级定义
*pSIC_IAR2 = 0xfffFFffF;
register_handler(ik_ivg10, UART_ISR); // UART ISR -> IVG 10
*pSIC_IMASK = 0x00004000;
}

void Test_TX(void)
{
int i;
for(i=0;i<50;i++) //发送测试函数,将生成的数据通过IR发送出去。
{
*pUART_THR=TXbuf[i];
while(!(*pUART_LSR&0x0020));
}
}

main()
{
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
UARTinit(9600,1e8); //9600波特率,100MHz系统时钟
Init_Interrupts();

while(1)Test_TX();

}

ADI Blackfin DSP处理器-BF533的开发详解9:UART串口的驱动和应用(含源码)相关推荐

  1. ADI Blackfin DSP处理器-BF533的开发详解68:电子琴的小应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了触摸屏电子琴的功能,运 ...

  2. ADI Blackfin DSP处理器-BF533的开发详解28:SD卡的文件系统(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了通过文件系统读取 SD 卡 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解31:汉字/ASIC II 字库(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了汉字库和 ASIC II ...

  4. ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 S ...

  5. ADI Blackfin DSP处理器-BF533的开发详解16:KEY按键的实现(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 实现原理 ADSP-EDU-B ...

  6. ADI Blackfin DSP处理器-BF533的开发详解4:中断的使用方法(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533的 16 个 ...

  7. ADI Blackfin DSP处理器-BF533的开发详解80:uClinux在BF上的应用详解

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 Blackfin可以跑操作系统,因为他作为一个 ...

  8. ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备

    BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...

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

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

  10. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

最新文章

  1. 特征工程之统计变换:对数+百分位秩+取Rank+Tukey打分+BoxCox+Percentile Rank
  2. Kernel 社区 开发准备工作mutt 邮件使用
  3. python快速编程入门例题-Python快速编程入门,打牢基础必须知道的11个知识点 !...
  4. python建立回归模型_简单线性回归的Python建模方法
  5. MongoDB安装与副本集配置
  6. Android系统中的进程管理:进程的创建
  7. ubuntu 上网总结
  8. Objective-C 和 Swift 混编项目的小 Tips(一)
  9. 法语语言考试C1,法语考试大比拼:专八与Dalf C1,哪个更难?
  10. 【转】SSL/TLS/WTLS协议原理
  11. 嗯,查询滑动窗口最大值的这4种方法不错....
  12. matlab跟maxwell联合优化,sim-sim-maxwell联合仿真遇到问题及解决方法
  13. 十三、Oracle学习笔记:decode函数、排序函数和高级分组函数
  14. logo计算机语言,LOGO语言
  15. mmorpg服务器物理,伸缩性MMORPG服务器架构的设计与实现
  16. 计算机体验分数,Windows 8 计算机体验评分(体验指数)在哪
  17. TDM-GCC MINGW配置与优化算法测试函数使用
  18. 正态分布(normal distribution)与偏态分布(skewed distribution)
  19. Android OpenGL ES 从入门到精通系统性学习教程
  20. 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列

热门文章

  1. 腾讯T9纯手写基于Mycat中间件的分布式数据库架构笔记
  2. 文档管理服务器脱机编辑,如何离线访问nicelabel文档管理系统
  3. Web安全 支付逻辑漏洞.
  4. 如果再回到2013年
  5. php显示图片适应手机屏幕,html图片自适应手机屏幕大小的css写法
  6. 2. 合并两个有序数组
  7. ip地址转换数字函数 iton_redis深度剖析: 03 redis读写哨兵模式
  8. 地下水环境监测技术规范中采样部分
  9. 接口测试要点及用例设计
  10. 只用3行代码,让Python提速4倍!最强辅助