打印
[PSoC™]

修改 PSoC™ Creator 中的PSoC™ 4 UART 波特率

[复制链接]
119|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IFX_Lingling|  楼主 | 2023-10-8 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
UART 波特率取决于驱动 SCB 的时钟和时钟分频值 (clkDivider),其计算方式如公式1:
clkDivider=HFCLK/(过采样X目标波特率)
公式1
接下来将演示如何在程序运行时修改 UART 波特率,并通过计算和应用时钟分频值实现115200 bps 的目标波特率。
  • 在 PSoC™ Creator 工程的top design (*.cysch) 文件中添加 UART 组件。
  • 如 Figure 1 所示,启用时钟 (Clock_1):

Figure1 *.cysch 组件
  • 参照 Figure 2,对 UART 组件配置做出如下修改:

Figure2  UART 组件配置
  • HFCLK (高速时钟): 24 MHz
  • 过采样: 13
  • 目标波特率: 115200 bps
  • 根据公式 1 计算时钟分频值,此处分频值计算结果为16。
  • 在 API 中使用计算结果减一的数值(本例中为16-1)配置时钟,如main.c文件的代码片段所示:
Clock_1_SetFractionalDividerRegister(15,0); //UART 波特率 115200 16-1
Code Listing 1               
  /* 运行 SCB (UART 模式) */    Clock_1_Stop();    if(uartboaudrate115200)    {        Clock_1_SetFractionalDividerRegister(15,0); //UART 波特率 115200 16-1    }    else    {        if(uartboaudrate9600)        {        Clock_1_SetFractionalDividerRegister(199,0); //UART 波特率 9600  200-1        }    }    Clock_1_Start();    UART_Start();    while(1)    {    UART_UartPutString("此为 SCB_UartComm 自定义波特率例程\r\n");    UART_UartPutString("\r\n");    CyDelay(500);    }

Figure 3 为测试结果:


Figure3 测试结果
参考资料:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:
简介:关于英飞凌——我们致力于打造一个更加便利、安全和环保的世界,在赢得自身成功发展的同时,积极践行企业社会责任。

62

主题

140

帖子

3

粉丝