搜索

[蓝牙芯片] CH579开发板蓝牙例程问题

[复制链接]
317|8
 楼主 | 2020-10-8 20:37 | 显示全部楼层 |阅读模式
本帖最后由 xing650721 于 2020-10-8 20:39 编辑

前段时间申请了一块CH579M-R1-1V2的开发板,刚开始编译了BLE/Peripheral项目,并特意改名为“First Test”,在BLE调试助手下能看到设备,就忙别的事情了,前两天闲下来,编译了PWM项目来点亮D3、D4(分别接PB0,PB1),然后把相关的PWM语句移植到BLE项目下,并且外接了一个CH341T的串口转USB板,D3、D4如预期的周期亮灭,串口也有相关调试信息输出,但是BLE调试助手下却看不到设备了,是哪里有问题呢?CH57x_BLE_LIB_V1.50
Initialized.
Advertising.
以上调试信息都能在串口调试助手上看到。如何调试呢?


使用特权

评论回复
| 2020-10-8 21:09 | 显示全部楼层
程序发出来瞅瞅呢

使用特权

评论回复
 楼主 | 2020-10-8 21:19 | 显示全部楼层
Taoyukai 发表于 2020-10-8 21:09
程序发出来瞅瞅呢

int main( void )
{
    float a = 0.0;
    int b = 0;
#ifdef DEBUG
  GPIOA_SetBits(bTXD1);
  GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
  UART1_DefInit( );
#endif   
      GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA); // PB0 - PWM6
      GPIOB_ModeCfg(GPIO_Pin_1, GPIO_ModeOut_PP_5mA); // PB1 - PWM7

      PWMX_CLKCfg( 4 );                   // cycle = 4/Fsys
      PWMX_CycleCfg( PWMX_Cycle_64 );     // 周期 = 64*cycle

    PRINT("Ready to LED.\n");

      PWMX_ACTOUT( CH_PWM6, 64/4, Low_Level, ENABLE);     // 25% 占空比
      PWMX_ACTOUT( CH_PWM7, 64/4, Low_Level, ENABLE);     // 25% 占空比
    PRINT("Ready to Delay 2000ms.\n");
    mDelaymS(2000);
    PRINT("%s.\n",VER_LIB);
    CH57X_BLEInit( );
    HAL_Init( );
    GAPRole_PeripheralInit( );
    Peripheral_Init( );

    while(1){
        if ((b % 1000) == 0)
            PRINT("%d\n",b);
        TMOS_SystemProcess( );
        a = (b++) * 0.001;
        PWMX_ACTOUT( CH_PWM6, sin(a * 2 * 3.1415926 ) * 32 + 32, Low_Level, ENABLE);     // 25% 占空比
        PWMX_ACTOUT( CH_PWM7, cos(a * 2 * 3.1415926 ) * 32 + 32, Low_Level, ENABLE);     // 25% 占空比
//        mDelaymS(100);

    }
}

没做什么改动,只是增加了PWM的一点东西,加了几个调试信息

使用特权

评论回复
| 2020-10-8 21:27 | 显示全部楼层
xing650721 发表于 2020-10-8 21:19
int main( void )
{
    float a = 0.0;

蓝牙库是在TMOS这个系统下运行的,蓝牙对实时性要求很高,sin cos耗时的操作会打断蓝牙时序,导致蓝牙搜索不到,不建议在主程序在运行,可新建事件运行

使用特权

评论回复
 楼主 | 2020-10-8 21:52 | 显示全部楼层
Taoyukai 发表于 2020-10-8 21:27
蓝牙库是在TMOS这个系统下运行的,蓝牙对实时性要求很高,sin cos耗时的操作会打断蓝牙时序,导致蓝牙搜 ...

谢谢回复,确实是数学函数影响的,那说明579剩余的计算能力极其有限了?
TMOS的资料哪里有呢?BLE调试助手的手机端程序哪里获取呢?

使用特权

评论回复
| 2020-10-9 10:28 | 显示全部楼层
xing650721 发表于 2020-10-8 21:52
谢谢回复,确实是数学函数影响的,那说明579剩余的计算能力极其有限了?
TMOS的资料哪里有呢?BLE调试助 ...

您好,我测试下你发的程序,sin cos 加a b变量的运算每次大约耗时40几us,这个正常不会影响蓝牙的连接,实际测试蓝牙也是可以正常连接的。100ms的延时千万不能加,那样肯定会导致蓝牙连接不上。
TMOS的说明可以参数EVT中CH57xBLE协议栈库说明.pdf
BLE调试助手手机端源码暂时不对外开放,可以参考我们提供的安卓蓝牙demo, BLE_Example_Android_1.0.zip (6.31 MB, 下载次数: 8)

使用特权

评论回复
| 2020-10-9 11:48 | 显示全部楼层
这个文章确实不错的,我想也不错的。

使用特权

评论回复
| 2020-10-9 13:05 | 显示全部楼层
确实是数学函数影响的,那说明579剩余的计算能力极其有限了

使用特权

评论回复
 楼主 | 2020-10-9 14:09 | 显示全部楼层
WCHTech2 发表于 2020-10-9 10:28
您好,我测试下你发的程序,sin cos 加a b变量的运算每次大约耗时40几us,这个正常不会影响蓝牙的连接, ...

谢谢回复,但蓝牙确实受到数学函数的影响了,改成语句
PWMX_ACTOUT(CH_PWM6, (b++) %64, Low_Level, ENABLE);
就没问题。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表