NXP JN5169 波特率配置方案
NXP JN5169 UART 波特率设置
- 一、系统时钟介绍
- 1、高速(32MHz)系统时钟
- 1、32MHz 晶体振荡器
- 2、高速RC振荡器
- 2、低速(32kHz)系统时钟
- 1、32 kHz RC 振荡器
- 2、32 kHz 晶体振荡器
- 3、32 kHz 外部时钟
- 二、UART 时钟
- 三、串口波特率设置
- 1、使用 vAHI_UartSetBaudRate() 接口设置波特率
- 2、使用 Divisor 和 ClocksPerBit 设置波特率
一、系统时钟介绍
1、高速(32MHz)系统时钟
JN5169 外接 32MHz 晶振,经过时钟源选择,32MHz 二分频输出 16MHz 到外设,外设使用 16MHz 的时钟。
1、32MHz 晶体振荡器
2、高速RC振荡器
JN5169 除了 32MHz 晶体振荡器以外,还提供了一个片上高速 RC 振荡器,用于两个目的:
2、低速(32kHz)系统时钟
32 kHz 系统时钟用于计时睡眠时间。 可以通过应用软件从以下三种来源之一选择时钟:
芯片复位或上电时,JN5169 默认使用内部 32 kHz RC 振荡器。 如果选择了另一个时钟源,则它将在所有 32 kHz 时序中保持使用状态,直到执行芯片复位为止。
1、32 kHz RC 振荡器
2、32 kHz 晶体振荡器
3、32 kHz 外部时钟
二、UART 时钟
/*等待系统时钟切换为外部32MHz晶振*/
while (bAHI_GetClkSource() == TRUE);
/*优化闪存等待状态*/
vAHI_OptimiseWaitStates();
三、串口波特率设置
UART 收发功能实现: NXP JN5169使用UART发送数据
UART 外设API函数:NXP JN5169 UART集成外设API函数
JN-UG-3087 JN516x Integrated Peripherals API User Guide 提供了两种方法设置波特率:
JN516x UART 可设置的波特率最高为 4 Mbits/s。
1、使用 vAHI_UartSetBaudRate() 接口设置波特率
vAHI_UartSetBaudRate() 接口提供了 6 个常用波特率的宏定义,需要哪个波特率直接传入相应的宏定义即可
vAHI_UartSetBaudRate(E_AHI_UART_1, E_AHI_UART_RATE_115200); //波特率 115200
2、使用 Divisor 和 ClocksPerBit 设置波特率
JN-UG-3087 JN516x Integrated Peripherals API User Guide 提供了两个 API 设置波特率。
这里提供一个计算 Divisor 和 Cpb 参数的 C 语言代码,还可以计算出当前参数设置的波特率的误差。
#include <stdio.h>
#include <math.h>#define ERROR 0.007 //宏定义波特率最大误差
#define DIVISOR_SIZE 1000 //宏定义除数范围 1 - 1000
#define CPB_SIZE 15 //时钟位范围0 - 15,不可更改,不推荐值0-2 int main(void) {unsigned short len, Divisor; //除数unsigned char i, Cpb; //ClocksPerBit,时钟位double baud_rate; //波特率//常用波特率unsigned long normal_rate[16] = {1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000,57600, 76800, 115200, 128000, 500000, 1000000, 4000000};double deviation; //波特率误差len = 0; //有效的波特率设置个数 for(i = 0; i < 16; i++) { //16个常用波特率 for(Divisor = 1; Divisor <= DIVISOR_SIZE; Divisor++) { //除数取值范围 for(Cpb = 3; Cpb <= CPB_SIZE; Cpb++) { //时钟位取值范围,不推荐值0-2 baud_rate = (16.0 / (Divisor * (Cpb + 1.0))) * 1000000.0; //当前除数和时钟位算出来的波特率 deviation = abs(baud_rate - normal_rate[i]) / baud_rate; //与目标波特率的误差 if(deviation <= ERROR) { //误差小于最大误差len++;printf("Divisor = %4d\tCpb = %2d\tbaud_rate = %7.4f bits/s\ttarget baud_rate = %7d\tdeviation = %1.5f\n", Divisor, Cpb, baud_rate, normal_rate[i], deviation);}}}}printf("\nlen = %5d\n", len);return 0;
}
当最大误差为 0.007,Divisor 范围为 1-1000 时,控制台输出:
设置 115200 波特率,当 Divisor = 23,Cpb = 5 时,波特率为 115942.0290,与目标波特率 115200 误差为 0.0064
vAHI_UartSetBaudDivisor(E_AHI_UART_1, 23);//波特率 115200,误差0.0064
vAHI_UartSetClocksPerBit(E_AHI_UART_1, 5);
NXP JN5169 波特率配置方案相关推荐
- NXP JN5169 UART 波特率设置
NXP JN5169 UART 波特率设置 一.系统时钟介绍 1.高速(32MHz)系统时钟 1.32MHz 晶体振荡器 2.高速RC振荡器 2.低速(32kHz)系统时钟 1.32 kHz RC 振 ...
- NXP JN5169 UART波特率问题
被NXP JN5169的UART收数据大批量错误坑了一把,最后发现是NXP的速率计算因子误差太大导致. 写了个程序,把所有常见的波特率匹配了一把,匹配的结果(相对误差在千分之七以下)即波特率的计算因子 ...
- NXP JN5169使用定时器进行PWM输出和定时功能
NXP JN5169使用定时器进行PWM输出和定时功能 一.定时器介绍 1.定时器介绍 2.定时器可操作的模式 3.定时器DIO 4.定时器和PWM模式 5.定时器中断 二.实现代码 1.PWM输出 ...
- NXP JN5169 JN-AN-1189-ZigBee-HA-Demo 使用UART0打印调试信息,UART1和其他设备收发数据
NXP JN5169 JN-AN-1189-ZigBee-HA-Demo 使用UART0打印调试信息,UART1和其他设备收发数据 一.JN-AN-1189 介绍 二.导入工程 三.修改工程 1.典型 ...
- NXP JN5169 使用看门狗定时器
NXP JN5169 使用看门狗定时器 一.看门狗定时器介绍 二.示例代码 一.看门狗定时器介绍 JN5169 提供了看门狗定时器以防止软件锁定.它通过计算高速 RC 系统时钟(该振荡器运行在 27M ...
- NXP JN5169 使用红外发送 / 接收
NXP JN5169 使用红外发送 / 接收 一.红外发送 1.红外发射二极管原理图 2.JN5169 发射端代码 3.STC15W408AS 接收端代码 二.红外接收 一.红外发送 1.红外发射二极 ...
- NXP MPC574x LinFlexd配置和DMA配置
概述 Lin总线在汽车电子中使用非常广泛,下面简单介绍一下NXP MPC574X系列PowerPC的Lin总线配置.由于Lin总线的通信速率比较低,所以一般在实际开发中会使用DMA外设进行数据的搬运, ...
- Cisco路由器的安全配置方案
Cisco路由器的安全配置方案 标签: cisco 配置 安全 路由器 方案 Cisco路由器的安全配置方案 Author: BluShin Auditor: Amy E-mail:Yangtongu ...
- NXP JN5169使用滴答定时器进行精准延时
NXP JN5169使用滴答定时器进行精准延时(us.ms) 一.滴答定时器介绍 二.滴答定时器系统图 1.系统图介绍 2.单次触发模式 3.可重启模式 4.连续运行模式 三.系统时钟 1.系统时钟域 ...
最新文章
- 这一次,彻底弄懂 JavaScript 执行机制
- 用 GDI 操作 EMF 文件[8]: 绘制图元文件时改变画笔与画刷
- Auto-Publishing and Monitoring APIs With Spring Boot--转
- Linux之bash shell基本命令
- Array.from()
- python web cgi
- 送书!1991-2018,区块链的那点事,都在这里了!
- 06-spring学习-自动装配
- linux开机自启动python脚本_Linux下Python脚本自启动和定时启动的详细步骤
- Stanford公开课《编译原理》学习笔记(2)递归下降法
- Series.str.split([pat, n, expand])
- vue-router 源码:实现一个简单的 vue-router
- 文件解压缩,删除文件,创建文件,读取xml文件为json字符串,得到相对路径下的图片名称...
- .net 2.0安装包打不开_腾讯悄悄发布 Linux QQ,版本 2.0 Beta
- 三个百分数相乘计算机,我的公考笔记:资料分析的三个速算技巧
- 怎么去掉360导航页
- java循环结构sum关于质数,质数
- NOTE_网络存储-2 by 张冬
- 如何固化zynq程序
- 第一章: 微型计算机组成结构