NRF52832 II2 使用nrf_drv库函数发送大于255字节的bug

nrf_drv_twi_tx 接口原型:

ret_code_t nrf_drv_twi_tx(nrf_drv_twi_t const * p_instance,
                          uint8_t               address,
                          uint8_t const *       p_data,
                          uint8_t               length,
                          bool                  no_stop)

length 参数定义为 uint8_t 类型,如果发送数据长度大于255, 将会产生异常

修复方法:

         实测应该是支持大于 255字节长度的,将uint8_t 改为uint16_t 即可

记录一下;

更正一下:

        TWIM模式使用,EasyDMA,无法使用

        同理, SPI也可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是生成NRF52832低功耗休眠中断唤醒代码的步骤: 1. 首先,在Nordic官方网站下载并安装nRF5 SDK(软件开发工具包)。该SDK包括了Nordic的低功耗无线芯片系列(包括NRF52832)的驱动程序、例程和文档等。 2. 在nRF5 SDK中选择合适的例程(如ble_app_uart)进行修改。可以使用Nordic提供的nRF Connect工具将该例程烧录到NRF52832芯片上进行测试。 3. 在代码中加入低功耗休眠中断唤醒相关的代码,如下所示: ```c // 初始化GPIO中断 nrf_gpio_cfg_input(GPIO_PIN, NRF_GPIO_PIN_PULLUP); nrf_gpio_cfg_sense_input(GPIO_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW); // 初始化中断 NVIC_ClearPendingIRQ(GPIOTE_IRQn); NVIC_SetPriority(GPIOTE_IRQn, 0); NVIC_EnableIRQ(GPIOTE_IRQn); // 进入低功耗休眠模式 __WFE(); __SEV(); __WFE(); ``` 其中,GPIO_PIN为需要监听的GPIO引脚号,GPIOTE_IRQn为GPIO中断向量号。 4. 在中断处理函数中加入唤醒代码,如下所示: ```c void GPIOTE_IRQHandler(void) { if (nrf_gpiote_event_is_set(NRF_GPIOTE_EVENTS_IN_0)) { nrf_gpiote_event_clear(NRF_GPIOTE_EVENTS_IN_0); // 唤醒代码 } } ``` 其中,NRF_GPIOTE_EVENTS_IN_0为GPIO中断事件号。 5. 在main函数中调用低功耗休眠函数,如下所示: ```c while (true) { // 进入低功耗休眠模式 __WFE(); __SEV(); __WFE(); } ``` 至此,NRF52832低功耗休眠中断唤醒代码的生成完成。需要注意的是,在实际应用中,需要根据具体的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值