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