搜索
bottom↓
回复: 4

CYPRESS BLE学习心得(三):如何在CYPRESS BLE中动态更改波特率

[复制链接]

出0入0汤圆

发表于 2016-6-30 12:51:12 | 显示全部楼层 |阅读模式
本帖最后由 xiaolong_ba 于 2016-6-30 12:51 编辑

一、前言   

    我们平时在写代码,特别是用到UART时,希望可以动态更改波特率,这样可以更方便地适应各种环境。现在我们就来看看如何在CYPRESS的BLE中实现动态更改波特率。

二、PSOC Creator配置界面的设置

时钟的配置

UART配置

三、关键代码的实现

1、宏定义   
#define UART_BUFFER_SIZE    (512u)//这里我设置缓冲区大小是512Bytes
uint8 bufferRx[UART_BUFFER_SIZE + 1u];     /* RX software buffer requires one extra entry for correct operation in UART mode */
uint8 bufferTx[UART_BUFFER_SIZE];           /* TX software buffer 发送缓冲区可以不用这么大,一般8字节就够用了*/
/***************************************
* 串口波特率设置
* Div SCBCLK=48MHz/BAUD_RATE*OVERSAMPLE-1
* 其中注释的是CYPRESS不支持的波特率
***************************************/
#define BAUD_1200           (2499u)   
#define BAUD_2400           (1249u)
#define BAUD_4800           (624u)
#define BAUD_9600           (312u)
//#define BAUD_14400          (207u)
#define BAUD_19200          (155u)
//#define BAUD_28800          (103u)
#define BAUD_38400          (77u)
#define BAUD_57600          (51u)
//#define BAUD_64000          (46u)
//#define BAUD_76800          (38u)
#define BAUD_115200         (25u)   /* UART: 115200 kbps with OVS = 16. Required SCBCLK = 1.846 MHz, Div = 26 */

2、UART参选数的初始化配置

3、开启UART

其中的DIVIDER_CLOCK就是波特率参数,具体的值如上面的宏定义所示
/******************************************************************************
* Function Name: SetUartConfiguration
***************************************************************************//**
*
*  设置串口配置
* \param  DIVIDER_CLOCK:配置波特率的时钟分频,不同的频率分频系统不同。
* \return
*   CYRET_SUCCESS    //Successful
*   CYRET_BAD_PARAM  //Uknowns operation mode - no actions
******************************************************************************/
void SetUartConfiguration(uint32_t DIVIDER_CLOCK)
{
//    cystatus status = CYRET_SUCCESS;
    UART_Stop();                    /* Disable component before configuration change */
    /* Change clock divider */
    UART_CLOCK_Stop();
    UART_CLOCK_SetFractionalDividerRegister(DIVIDER_CLOCK, 0u);
    UART_CLOCK_Start();
    /* Configure to UART operation */
    UART_UartInit(&configUart);         
    UART_Start();                       /* Enable component after configuration change */     
}

四、总结
    如果想要动态地更改波特率,只需要调用SetUartConfiguration(波特率)即可实现。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

发表于 2016-6-30 15:51:21 | 显示全部楼层
感谢楼主分享

出0入0汤圆

 楼主| 发表于 2016-6-30 17:10:32 | 显示全部楼层

有啥不对的,欢迎指出。

出0入0汤圆

发表于 2016-7-1 10:15:42 | 显示全部楼层
CYPRESS 的 BLE好用吗?具体什么型号?我也想玩一玩

出0入0汤圆

 楼主| 发表于 2016-7-1 10:37:42 | 显示全部楼层
本帖最后由 xiaolong_ba 于 2016-7-1 10:39 编辑
zxq1990 发表于 2016-7-1 10:15
CYPRESS 的 BLE好用吗?具体什么型号?我也想玩一玩


好不好用,这个智者见智,仁者见仁的,如果你是代表公司的话,可能以公司的名义跟代理商申请一套开发套件,但是要与具体的项目来申请,正常情况下是很好申请的。当然啦,如果不是的话可以去淘宝找找有人卖的,或者加CYPRESS群或论坛里问问有没有转卖。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-16 23:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表