nrf52832 TWI/I2C 调试
概述:
Nordic 芯片中TWI 表示的就是I2C,各个芯片的I2C 功能都差不多,不做过多介绍,直接参考官方SDK库进行调试;
SDK 版本: SDK\nRF5_SDK_17.0.2_d674dde\
参考Demo:
打开参考代码:..\nRF5_SDK_17.0.2_d674dde\nRF5_SDK_17.0.2_d674dde\examples\peripheral\twi_sensor
关键的几个函数如下:
初始化twi_init
void twi_init (void)
{ret_code_t err_code;const nrf_drv_twi_config_t twi_lm75b_config = {.scl = ARDUINO_SCL_PIN, //指定SCL PIN.sda = ARDUINO_SDA_PIN, //指定SDA PIN.frequency = NRF_DRV_TWI_FREQ_100K, //指定速度.interrupt_priority = APP_IRQ_PRIORITY_HIGH,.clear_bus_init = false //是否清除之前PIN的设置};err_code = nrf_drv_twi_init(&m_twi, &twi_lm75b_config, twi_handler, NULL);APP_ERROR_CHECK(err_code);nrf_drv_twi_enable(&m_twi);
}
事件回调:
void twi_handler(nrf_drv_twi_evt_t const * p_event, void * p_context)
{switch (p_event->type){case NRF_DRV_TWI_EVT_DONE:if (p_event->xfer_desc.type == NRF_DRV_TWI_XFER_RX){data_handler(m_sample);}m_xfer_done = true;break;default:break;}
}
注: 主要设置m_xfer_done 全局变量,发送/接收是否完成
接受函数nrf_drv_twi_rx()
ret_code_t err_code = nrf_drv_twi_rx(&m_twi, LM75B_ADDR, &m_sample, sizeof(m_sample));
发送函数 nrf_drv_twi_tx()
err_code = nrf_drv_twi_tx(&m_twi, LM75B_ADDR, reg, sizeof(reg), false);
大致调试过程如下:
1 代码实现, 分别实现对nrf_drv_twi_init,nrf_drv_twi_rx, nrf_drv_twi_tx相关调用
2 修改工程配置文件sdk_config.h, 增加TWI的相关配置,参考twi_sensor 实现
遇到的问题:
芯片内部上拉电阻问题:
在nrf_drv_twi_init 初始化参数中,有个clear_bus_init , 如果设置为ture, 库里面会对SCL、SDA重新初始化,其中就包含了上拉电阻配置;
如果不需要内部上拉电阻,将clear_bus_init 设置为false
速率问题:
从SDK 给的参数看,是支持100K, 250K, 400K 的;
typedef enum
{
NRF_DRV_TWI_FREQ_100K = NRF_TWI_FREQ_100K , ///< 100 kbps.
NRF_DRV_TWI_FREQ_250K = NRF_TWI_FREQ_250K , ///< 250 kbps.
NRF_DRV_TWI_FREQ_400K = NRF_TWI_FREQ_400K ///< 400 kbps.
} nrf_drv_twi_frequency_t;
从实际测试中,发现如果使用内部上拉,使能跑到100K
我使用的是PCA10040 开发板,板上没有上拉,刚好从设备也没有上拉,只能使用内部的,跑250K, 怎么也跑不起来,估计内部上拉阻值问题,不一定带的起;
后续。。。。待写
nrf52832 TWI/I2C 调试相关推荐
- NRF52832学习笔记(19)——TWI(I2C)接口使用
一.硬件连接 功能口 引脚 SCL 5 SDA 4 二.移植文件 注意:以下出现缺失common.h文件错误,去除即可.uint8改为uint8_t或unsigned char或自己宏定义 链接:ht ...
- NORDIC52832 TWI(I2C) 特点 (2)驱动CHT8305C 温湿度传感器
1. nRF52832 TWI特点 本章描述的是 TWIM (带 EasyDMA 的 TWI 主机) ),本章中的 TWI 均指的是 TWIM 即 TWI 主机. nRF 52832 片内集成的 TW ...
- Nordic nRF5 SDK 学习笔记之四, TWI (I2C) 总线
硬件: nRF52832 SDK: Ver 15.2.0 目标: TWI (I2C) 总线应用 (TWI MASTER 模式) 样例: <InstallFolder>\examples\p ...
- I2C调试遇到的问题以及解决办法---“busy死锁状态”以及“从设备地址无应答”问题
stm32f103c8t6 cubemx 关于I2C通信不通的若干问题解决方法 i2c调试过程中出现BUSY状态 i2c调试过程中,向从设备发送地址,从设备无应答信号传给主设备 总结 i2c调试过程中 ...
- STM32L系列+ADXL345的I2C调试
STM32的硬件I2C调试确实要比模拟麻烦很多啊,一大堆的配置,调通F系列的,本以为直接移植到L系列会很轻松,没想到问题依然很多,现直接附上STM32L系列的I2C初始化及读写函数: 1.GPIO的初 ...
- uboot 周立功 mx6g2c imx6ul io口模拟i2c 调试at24c512
关于 uboot 周立功 mx6g2c imx6ul io口模拟i2c 调试at24c512 cpu模块连接电路 uboot 使用i2c驱动 为如图 修改include/configs/mx6g2c. ...
- Proteus使用心得(1) -- I2C调试器
1. 前言 学习单片机不仅头发会变少,钱包也会变薄.买一套单片机学习套装,加上各式各样的外围器件,动辄就要几百块.然而proteus这款电路仿真软件就很好地照顾到我们穷学生的痛处,妈妈再也不用担心我们 ...
- NORDIC52832 TWI(I2C) 读 写 (1)
1.I2C总线概述 1.1主要特征 nRF52832 片内集成了 TWI Two wire Serial Interface 两线串行总线 TWI 完全兼容 I2C 总线,简单一点,可以直接认为 TW ...
- linux i2c调试命令,嵌入式Linux下I2C接口调试
By Toradex秦海 1).简介 I2C是嵌入式设备最为常用的接口之一,常用于如下面这些应用场景,因此本文就基于嵌入式Linux演示在User Space进行I2C设备调试. - Digital ...
最新文章
- 线程同步初解---转载
- Java 摄氏和华氏之间的转换
- ios 图片 相册 存储方式
- 分享篇--esp32直连天猫精灵
- 去除win7桌面快捷方式小箭头
- 收集21个经典Java面试题
- Webpack基础之输出
- mate7安装android o,华为Mate7升级安卓6.0详细教程
- CAD迷你看图2019破解版|CAD迷你看图2019R5中文破解版下载
- 远程学习(一):基于ZeroTier的异地组网及Moon转发节点搭建
- html怎么改项目符号的颜色,word2003项目符号颜色的修改方法
- 802.11ac 速率 + 信道 + 国家码信道
- android系统开机logo定制
- ICLR2020国际会议精彩演讲抢先看(含源码)!!
- 海外手机号码正则匹配
- Android Studio计算BMI小软件
- Java生成微信群组图标
- 线性稳压电源和开关稳压电源
- 【Python入门教程】第15篇 if条件语句
- Javascript 计算众数和中位数的代码