CH579 Peripheral例程 通知功能

工程师你好,我请教一下这个例程中我只看到定义、调用通知的函数如图  但通知这个功能是定时几秒钟一直发送的,这个是程序哪里触发的呢,我现在想把通知这个功能修改为  CH579的串口收到数据,然后再触发通知功能,让蓝牙发出串口接收的数据。谢谢!望指点。

icon_jpg.gif通知功能.JPG


static void performPeriodicTask(void) {        

        len = UART1_RecvString(RxBuff);

        if(len)

        {

        uint8_t notiData[SIMPLEPROFILE_CHAR4_LEN] = RxBuff;

        peripheralChar4Notify(notiData, SIMPLEPROFILE_CHAR4_LEN);

        }

}


您好,可以参考下此链接,介绍了蓝牙主从收发函数:

从机例程是通过周期任务发送noti信息的:

tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD);

https://www.cnblogs.com/risc5-ble/p/15994545.html


你好,我修改如下

static void performPeriodicTask( void )    //通知

{

uint16 len=0;

uint8 RxBuff[SIMPLEPROFILE_CHAR4_LEN];

len = UART1_RecvString(RxBuff);

   if(len)

    {

     peripheralChar4Notify(RxBuff, len);

    }

}

然后把SIMPLEPROFILE_CHAR4_LEN这个值设置为20,CH579串口接收数据后蓝牙一次发出的数据上限是8字节,这个值可以在哪里修改吗,我想一次发20个字节左右。谢谢!


你好,我根据3楼的教程修改一包的最大数据量。但是通知还是一次只能接受8字节,请问可能是哪里的问题呢?我的修改如下:

1.

#ifndef BLE_BUFF_MAX_LEN

#define BLE_BUFF_MAX_LEN251

........

2.

void Peripheral_Init( )

{

GATT_InitClient();

  Peripheral_TaskID = TMOS_ProcessEventRegister( Peripheral_ProcessEvent );

...........

3.

static void peripheralStateNotificationCB( gapRole_States_t newState, gapRoleEvent_t * pEvent )

{

........

    case GAPROLE_CONNECTED:

      if( pEvent->gap.opcode == GAP_LINK_ESTABLISHED_EVENT )

      {

        Peripheral_LinkEstablished( pEvent );

      }

      PRINT( "Connected..\n" );

      attExchangeMTUReq_t req;   //修改一包字节数

      req.clientRxMTU = 247;

      GATT_ExchangeMTU(peripheralConnList.connHandle, &req, Peripheral_TaskID);  

      break;

..........


您好,可以参考下ch573的BLE  UART例程,串口的FIFO是8个字节。


好的,谢谢。


你好,请教一下这个通知的函数static void performPeriodicTask( void )    //通知  调用的周期能不能设置短一点呢,我想让他调用频繁一些,多传输一些数据。


哦哦,我找到了  在这里

// How often to perform periodic event

#define SBP_PERIODIC_EVT_PERIOD               1600


@小二哥  

贴出来CH579 Peripheral例程 通知功能的正确程序,学习一下


只有登录才能回复,可以选择微信账号登录