BF518/BF516/BF514/BF512系列DSP的开发教程八(入门教程-串口)

硬件准备

BF518开发板

产品链接:https://item.taobao.com/item.htm?id=39906148347&spm=a1z10.5-c.w4002-5192690539.11.22951471QbeGrA

BF518仿真器

产品链接:https://item.taobao.com/item.htm?id=38007242820&spm=a1z10.5-c.w4002-5192690539.11.6e614901nd1XEO

接口功能介绍

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

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

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

在这里插入图片描述

接口寄存器说明

在这里插入图片描述

例子代码分析

代码请参考板卡驱动代码的 RS232 程序。
div = SYSCLK/rate/16; //计算波特率配置值
*pUART0_GCTL=0x0009; //配置 UART 工作模式
*pUART0_LCR=0x0080;// DLAB=1 允许访问 DLL 和 DLH
*pUART0_DLL=div;
*pUART0_DLH=div>>8; //DLL DLH 分别赋值
*pUART0_LCR=0x0003;// 允许访问 RBR THR 和 IER
*pUART0_IER=0x0001;// 接收中断允许
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff; // UART 中断等级定义
*pSIC_IAR2 = 0xf3ffffff;
register_handler(ik_ivg10, UART0_ISR); //注册中断
*pSIC_IMASK0 = 0x00400000; //使能中断
*pUART0_THR=TXbuf[i]; //向 UART0 传输数据寄存器写数据
while(!(*pUART_LSR&0x0020)); //等待传输完成
EX_INTERRUPT_HANDLER(UART0_ISR) //UART 接收数据中断函数
{
if(*pUART0_LSR&DR) //判断是否有新的数据。
{
if(cont>512) //防止 buff 溢出,测试代码,将接收到的数据重复写入 512 字节的 buff
cont = 0;
RXbuf[cont]=*pUART0_RBR; //读取数据
cont++;
}
}

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

代码实现了通过 UART0 接口发送测试数据,并且通过接收中断函数获取接收到的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADI_OP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值