關(guān)于ch579 藍牙設(shè)置MTU對連接質(zhì)量的問題

我像問一下,修改ch579config中的BLE_BUFF_MAX_LEN為250??BLE_BUFF_NUM為10??BLE_TX_NUM_EVENT為40 會對藍牙發(fā)送有影響嗎

我現(xiàn)在遇到的問題: 在第一次連接上藍牙之后,發(fā)送命令等都正常,發(fā)送240字節(jié)的包也正常,但是斷開連接再連接,發(fā)送命令后,

mcu就掛了。我不確定是不是因為改了這幾個參數(shù),因為之前的工程只是發(fā)json 串,沒有發(fā)過大包,是正常的


static bStatus_t simpleProfile_WriteAttrCB( uint16 connHandle, gattAttribute_t *pAttr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?uint8 *pValue, uint16 len, uint16 offset,uint8 method? )

{

? bStatus_t status = SUCCESS;

//uint8 notifyApp = 0xFF;

??

? // If attribute permissions require authorization to write, return error

? if ( gattPermitAuthorWrite( pAttr->permissions ) )

? {

? ? // Insufficient authorization

? ? return ( ATT_ERR_INSUFFICIENT_AUTHOR );

? }

??

? if ( pAttr->type.len == ATT_BT_UUID_SIZE )

? {

? ? // 16-bit UUID

? ? uint16 uuid = BUILD_UINT16( pAttr->type.uuid[0], pAttr->type.uuid[1]);

? ? switch ( uuid )

? ? {

? ? ? case SIMPLEPROFILE_CHAR1_UUID:

? ? ? ? //Validate the value

? ? ? ? // Make sure it's not a blob oper

? ? ? ? if ( offset == 0 )

? ? ? ? {

? ? ? ? ? if ( len > SIMPLEPROFILE_CHAR1_LEN )

? ? ? ? ? {

? ? ? ? ? ? status = ATT_ERR_INVALID_VALUE_SIZE;

? ? ? ? ? }

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? status = ATT_ERR_ATTR_NOT_LONG;

? ? ? ? }

? ? ? ??

? ? ? ? //Write the value

? ? ? ? if ( status == SUCCESS )

? ? ? ? {

? ? ? ? ? tmos_memcpy( pAttr->pValue, pValue, SIMPLEPROFILE_CHAR1_LEN );

? ? ? ? ? //notifyApp = SIMPLEPROFILE_CHAR1;? ? ? ??

? ? ? ? }? ? ? ? ? ??

? ? ? ? break;

? ? ? ??

case SIMPLEPROFILE_CHAR2_UUID:

? ? ? ? //Validate the value

? ? ? ? // Make sure it's not a blob oper

? ? ? ? if ( offset == 0 )

? ? ? ? {

? ? ? ? ? if ( len > SIMPLEPROFILE_CHAR2_LEN )

? ? ? ? ? {

? ? ? ? ? ? status = ATT_ERR_INVALID_VALUE_SIZE;

? ? ? ? ? }

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? status = ATT_ERR_ATTR_NOT_LONG;

? ? ? ? }

? ? ? ??

? ? ? ? //Write the value

? ? ? ? if ( status == SUCCESS )

? ? ? ? {

? ? ? ? ? tmos_memcpy( pAttr->pValue, pValue, SIMPLEPROFILE_CHAR2_LEN );

tmos_memcpy( pAppValue, pValue, SIMPLEPROFILE_CHAR2_LEN );

? ? ? ? ? deal_json(pAppValue);

? ? ? ? ? //notifyApp = SIMPLEPROFILE_CHAR2;? ? ? ??

? ? ? ? }? ? ? ? ? ??

? ? ? ? break;

? ? ? ??

? ??

? ? ? case GATT_CLIENT_CHAR_CFG_UUID:

? ? ? ? status = GATTServApp_ProcessCCCWriteReq( connHandle, pAttr, pValue, len,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?offset, GATT_CLIENT_CFG_NOTIFY );

? ? ? ? break;

? ? ? ??

? ? ? default:

? ? ? ? // Should never get here! (characteristics 2 and 4 do not have write permissions)

? ? ? ? status = ATT_ERR_ATTR_NOT_FOUND;

? ? ? ? break;

? ? }

? }



if (app_cmd == CMD2_START_MEASURE1){

if(Page_OPT.Page_ID ==? PAGE_ID_WaitForPipe){

// 清除流量

sensor_clear_flow(&GAS);

sensor_set_samlpe_interval(&GAS, 1);

sensor_data.time = 0;

//清除存儲值

time_display = 0;

TMR0_init();

tmos_start_task(SYSTEM_TaskID, RUN_EVENT_MSG, MS1_TO_SYSTEM_TIME(100));

tmos_start_task(SYSTEM_TaskID,V_Q_CHANGE_MSG,MS1_TO_SYSTEM_TIME(100));

tmos_start_task(SYSTEM_TaskID,BLE_SEND_FIRST_MEASURE_DATA,MS1_TO_SYSTEM_TIME(50));

time_inver = time_count;

}

LCD_KEY_PAGE_START();



我像問一下config中BLE_BUFF_MAX_LEN 改為250??BLE_BUFF_NUM改為10?BLE_TX_NUM_EVENT改為40 對藍牙連接的穩(wěn)定性有沒有關(guān)系,我改完之后,會偶爾出現(xiàn)發(fā)包卡死的問題


我遇到的問題:

改完包后,第一次連接發(fā)送讀取數(shù)據(jù)的指令,可以讀到數(shù)據(jù),并且循環(huán)發(fā)送也都能收到數(shù)據(jù),但是斷開連接后,再發(fā)送讀取數(shù)據(jù)的指令,整個就會卡死,這個斷開連接再連接的過程可能兩到三次,就會出現(xiàn)卡死的問題

在之前的工程中,我只是發(fā)送一些json串,沒有改過這些參數(shù),是沒有出現(xiàn)問題的



您好,BLE從機默認代碼中char1~char4默認通信數(shù)據(jù)長度都是1,char5是5。

如要修改MTU,BLE從機例程中注意修改如下幾處

1.config.h中BLE_BUFF_MAX_LEN改為最大值251

2.gattprofile.h中SIMPLEPROFILE_CHARn_LEN(n=1~5)改為最大值243(char4默認使用notify,協(xié)議開銷少一個字節(jié),故char4的MTU可以配置244)

3. 如果需要使用notify且發(fā)包負載大于20個字節(jié),則CH58xBLE_LIB.h中的ATT_MTU_SIZE也需要擴大為最大負載+3


BLE主機如果是手機APP,要看APP的是否對MTU有調(diào)整。如果手機APP是BLE調(diào)試助手,每次連接后要在APP右上角修改MTU為251(最大值視情況而定,與config.h中的BLE_BUFF_MAX_LEN一致就好)


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频