- 2023-08-17
-
回复了主题帖:
报销返现通知|得捷电子 Follow me 第一期活动
感谢
- 2023-08-14
-
回复了主题帖:
有奖直播:NXP 汽车系统电源管理开讲啦,从功能安全架构到新品FS26,预约有礼~
已报名
-
回复了主题帖:
【Microchip WBZ451 Curiosity】开箱评测
牛,学习了
- 2023-07-19
-
回复了主题帖:
【Telink新一代低功耗高性能多协议无线套件B91 评测】nodered+HomeAssistant按键秀
牛
-
回复了主题帖:
泰凌微B91开发套件---MESH
牛
- 2023-07-18
-
回复了主题帖:
【EETALK】有没有那么一个电源问题,你处理了很久都没解决掉
bitter 发表于 2023-7-18 17:45
之前用国民技术的某款低功耗芯片,用来检测IO口外部电平高低状态,调试和测试的时候都没问题,发货到现场的 ...
应该也不是时间差的原因,调试和测试的时候也是两套电源先后上电,也问了FAE,他们测试也没出现死机现象,不过他们的芯片VDD并没有到达1.1v,不清楚是不是这个差异导致的
-
回复了主题帖:
【EETALK】有没有那么一个电源问题,你处理了很久都没解决掉
之前用国民技术的某款低功耗芯片,用来检测IO口外部电平高低状态,调试和测试的时候都没问题,发货到现场的时候一上电就死机了。后面检查发现是因为现场使用的两套电源,芯片与IO口外部电平是两套不同的24V电源降压到3.3V的,上电时存在一个时间差,IO口外部电压先到3.3V,测量芯片VDD大约1.1v左右(芯片的电源还没起来,不清楚这个1.1v是从哪里窜过来的),芯片死机。后面就弃用的这个方案了。
- 2023-07-15
-
回复了主题帖:
hi,小伙伴们!这里有棵测评许愿树
最近rtthread推出的“星火一号”,想要学习一下rtthread操作系统
- 2023-07-14
-
回复了主题帖:
【EETALK】焊工大比拼,来分享分享你的焊工修炼经验吧~~
上次焊接的时候还是在大二实验课的时候了工作后都是找硬件工程师帮忙焊接的
- 2023-07-13
-
回复了主题帖:
BLE蓝牙连接,人一多就不稳定
射频接触的不多,不太懂,坐等专业的大佬抽空来解惑一下,
- 2023-07-12
-
加入了学习《【得捷电子Follow me第1期】项目总结》,观看 【得捷电子Follow me第1期】项目总结
- 2023-07-10
-
发表了主题帖:
【NRF52840】学习记录——过滤
【NRF52840】学习记录——扫描过滤
扫描过滤初始化nrf_ble_scan_filter_set
/**@brief Function for adding any type of filter to the scanning.
*
* @details This function adds a new filter by type @ref nrf_ble_scan_filter_type_t.
* The filter will be added if the number of filters of a given type does not exceed @ref NRF_BLE_SCAN_UUID_CNT,
* @ref NRF_BLE_SCAN_NAME_CNT, @ref NRF_BLE_SCAN_ADDRESS_CNT, or @ref NRF_BLE_SCAN_APPEARANCE_CNT, depending on the filter type,
* and if the same filter has not already been set.
*
* @param[in,out] p_scan_ctx Pointer to the Scanning Module instance.
* @param[in] type Filter type.
* @param[in] p_data The filter data to add.
*
* @retval NRF_SUCCESS If the filter is added successfully.
* @retval NRF_ERROR_NULL If a NULL pointer is passed as input.
* @retval NRF_ERROR_DATA_SIZE If the name filter length is too long. Maximum name filter length corresponds to @ref NRF_BLE_SCAN_NAME_MAX_LEN.
* @retval NRF_ERROR_NO_MEMORY If the number of available filters is exceeded.
* @retval NRF_ERROR_INVALID_PARAM If the filter type is incorrect. Available filter types: @ref nrf_ble_scan_filter_type_t.
* @retval BLE_ERROR_GAP_INVALID_BLE_ADDR If the BLE address type is invalid.
*/
ret_code_t nrf_ble_scan_filter_set(nrf_ble_scan_t * const p_scan_ctx,
nrf_ble_scan_filter_type_t type,
void const * p_data);
首先,必须定义相关宏定义才会开启扫描过滤功能
除了扫描过滤使能,开启对应的过滤模式,还需要对应的过滤模式的数量大于0,如要开启name过滤模式,NRF_BLE_SCAN_NAME_CNT应大于0。
过滤模式有:name、address、UUID、appearance、short_name等。nrf_ble_scan_filter_type_t扫描过滤类型:
扫描过滤使能nrf_ble_scan_filters_enable
/**@brief Function for enabling filtering.
*
* @details The filters can be combined with each other. For example, you can enable one filter or several filters.
* For example, (NRF_BLE_SCAN_NAME_FILTER | NRF_BLE_SCAN_UUID_FILTER) enables UUID and name filters.
*
* @param[in] mode Filter mode: @ref NRF_BLE_SCAN_FILTER_MODE.
* @param[in] match_all If this flag is set, all types of enabled filters must be matched
* before generating @ref NRF_BLE_SCAN_EVT_FILTER_MATCH to the main application. Otherwise, it is enough to match
* one filter to trigger the filter match event.
* @param[in] p_scan_ctx Pointer to the Scanning Module instance.
*
* @retval NRF_SUCCESS If the filters are enabled successfully.
* @retval NRF_ERROR_INVALID_PARAM If the filter mode is incorrect. Available filter modes: @ref NRF_BLE_SCAN_FILTER_MODE.
* @retval NRF_ERROR_NULL If a NULL pointer is passed as input.
*/
ret_code_t nrf_ble_scan_filters_enable(nrf_ble_scan_t * const p_scan_ctx,
uint8_t mode,
bool match_all);
-
回复了主题帖:
【SparkFun MGM240P Thing Plus Matter 测评】+nrf connect sdk2.4下载安装
damiaa 发表于 2023-7-10 08:55
是sdk norid 的nrf connect sdk2.4
sdk啊,我还以为是类似于蓝牙抓包软件呢
-
回复了主题帖:
招:售前,国际等技术支持,基本月薪1万+ 双休+5-20天带薪年假+六险一金
不错的
- 2023-07-09
-
回复了主题帖:
【SparkFun MGM240P Thing Plus Matter 测评】+nrf connect sdk2.4下载安装
这个软件有什么功能?可以抓包吗?可以发无线数据吗?
-
回复了主题帖:
【NRF52840】学习记录——蓝牙协议栈
Jacktang 发表于 2023-7-9 08:41
内部主时钟产生的低速时钟,电流消耗最大,这个电流是否可以控制为低功耗呢
这个已经是低功耗了。内部主时钟产生的低速时钟通常于休眠模式,当协议栈使用时,其必须一直运行,这也就意味着在正常工作模式时,其也在运行,将比使用其他时钟来源电流消耗大幅增加(很可能是mA平均电流消耗,而不是µa)。一般来说,不应该有理由使用这个时钟源,应该使用RC振荡器而不是合成时钟。
- 2023-07-08
-
回复了主题帖:
【NRF52840】学习记录——连接
本帖最后由 bitter 于 2023-7-8 12:05 编辑
Jacktang 发表于 2023-7-8 08:51 ble_conn_params_init函数实际上是连接参数更新初始化 怎么理解连接参数更新初始化?
在GAP初始化中,我们调用了sd_ble_gap_ppcp_set这个函数,设置了连接参数ble_gap_conn_params_t,在这个结构体里定义了连接间隔的最大值与最小值、从设备延迟次数、超时时间,有关这几个参数的定义,参考:连接参数说明。上述这个过程实际上是在蓝牙主从设备建立连接之前主从设备的内部过程。当蓝牙主从设备连接时,从设备发起连接参数更新请求,而调用ble_conn_params_init这个函数设置的就是连接参数更新的参数,如果p_conn_params为NULL,而采用主设备的连接参数,非NULL,则为从设备的连接参数,first_conn_params_update_delay为第一次初始化(连接或启动通知)到第一次连接参数更新请求时间间隔,next_conn_params_update_delay为下一次连接参数更新请求到上一次连接参数更新请求时间间隔,max_conn_params_update_count放弃连接参数更新的最大次数,disconnect_on_fail连接参数更新失败是否断开连接,有关连接参数更新的过程参考:蓝牙连接参数更新
- 2023-07-06
-
回复了主题帖:
【NRF52840】学习记录——扫描
火辣西米秀 发表于 2023-7-6 07:25
掌握使用这个nrf_ble_scan_init函数有什么秘诀
主要是主要两个参数,一个是扫描初始化参数,另一个是扫描处理回调函数。
在扫描初始化参数,主要是扫描参数。
扫描参数主要包含:active:是否主动扫描,配置为1则是主动扫描,0则是被动扫描。interval:扫描间隔,控制器间隔多长时间扫描一次,也就是两个连续的扫描窗口开始时间的时间间隔。window:扫描窗口,每次扫描所持续的时间,在持续时间内,扫描设备一直在广播信道上运行。filter_policy:扫描筛选策略,也就是说接受任何广播数据或者仅仅接受白名单设备的广播数据包。实际上就是决定是否使用白名单过滤广播数据包。这里注意一点,如果定向广播数据包中的目的地址并非是自己的,那么该数据必须抛弃,即使广播数据包的发送者在自己的白名单中。timeout:扫描超时,超过指定的时间后,没有扫描到设备将停止扫描。scan_phys:扫描的物理层速度
在扫描处理回调函数,主要是扫描事件类型。
根据不同的扫描事件执行不同的任务,包含:NRF_BLE_SCAN_EVT_FILTER_MATCH:过滤器匹配事件、NRF_BLE_SCAN_EVT_WHITELIST_REQUEST:请求白名单、NRF_BLE_SCAN_EVT_WHITELIST_ADV_REPORT:发现白名单中设备、NRF_BLE_SCAN_EVT_NOT_FOUND:过滤器不匹配事件、NRF_BLE_SCAN_EVT_SCAN_TIMEOUT:扫描超时、NRF_BLE_SCAN_EVT_CONNECTING_ERROR:连接错误、NRF_BLE_SCAN_EVT_CONNECTED:连接。
-
回复了主题帖:
【NRF52840】学习记录——蓝牙工作模式
火辣西米秀 发表于 2023-7-6 07:24
楼主的蓝牙工作模式 文呢
我还以为链接贴上了
- 2023-07-05
-
发表了主题帖:
【NRF52840】学习记录——连接
本帖最后由 bitter 于 2023-7-6 18:09 编辑
【NRF52840】学习记录——连接
连接参数更新流程
参考:蓝牙连接参数更新 --(1)连接参数说明和连接参数更新流程和BLE蓝牙笔记----连接参数更新
连接参数更新
实际上关于连接的初始化在GAP初始化中已经设置了:http://bbs.eeworld.com.cn/thread-1248702-1-1.html,在ble_conn_params_init函数实际上是连接参数更新初始化
/**[url=home.php?mod=space&uid=159083]@brief[/url] Function for initializing the Connection Parameters module.
*
* @note If the negotiation procedure should be triggered when notification/indication of
* any characteristic is enabled by the peer, then this function must be called after
* having initialized the services.
*
* @param[in] p_init This contains information needed to initialize this module.
*
* @retval NRF_SUCCESS Successful initialization.
* @retval NRF_ERROR_INVALID_ADDR The provided Connection Parameters pointer is invalid.
* @retval NRF_ERROR_INVALID_PARAM The provided Connection Parameters are not valid.
* @retval NRF_ERROR_NULL @p p_init was NULL.
* @retval NRF_ERROR_INTERNAL An unexpected error occurred.
*/
ret_code_t ble_conn_params_init(const ble_conn_params_init_t * p_init);
连接参数初始化结构体
/**@brief Connection Parameters Module init structure. This contains all options and data needed for
* initialization of the connection parameters negotiation module. */
typedef struct
{
ble_gap_conn_params_t * p_conn_params; //!< Pointer to the connection parameters desired by the application. When calling ble_conn_params_init, if this parameter is set to NULL, the connection parameters will be fetched from host.
uint32_t first_conn_params_update_delay; //!< Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (in number of timer ticks).
uint32_t next_conn_params_update_delay; //!< Time between each call to sd_ble_gap_conn_param_update after the first (in number of timer ticks). Recommended value 30 seconds as per BLUETOOTH SPECIFICATION Version 4.0.
uint8_t max_conn_params_update_count; //!< Number of attempts before giving up the negotiation.
uint16_t start_on_notify_cccd_handle; //!< If procedure is to be started when notification is started, set this to the handle of the corresponding CCCD. Set to BLE_GATT_HANDLE_INVALID if procedure is to be started on connect event.
bool disconnect_on_fail; //!< Set to TRUE if a failed connection parameters update shall cause an automatic disconnection, set to FALSE otherwise.
ble_conn_params_evt_handler_t evt_handler; //!< Event handler to be called for handling events in the Connection Parameters.
ble_srv_error_handler_t error_handler; //!< Function to be called in case of an error.
} ble_conn_params_init_t;