海思NB-IOT模块HI2115芯片I2C通信
1. 首先确定硬件上I2C的引脚,手册上并没有,海思技术支持说是14和15脚,我们用的是12和13脚,问题在于,如果是硬件I2C应该不能随便换个引脚吧,难道是模拟的时序?

2. 下一个奇怪的地方,这个寄存器居然只有两行,没其他地方使用,真奇怪?

看下相关的代码
3. PIO的设置
static I2C_RET i2c_set_pio(PIN pin, FUNC i2c_func)
{
if (pin != PIN_NONE)
{
if(!pio_set_function(pin, i2c_func))
{
return I2C_RET_ERROR;
}
}
}
继续往下看,最终设置的是下面的,还是直接写寄存器的意思?不过后面的半句话不太明白什么意思,意思是把这个数组放到外设的代码段里面。
/**
* Direct access to register address space for all PIOs
*/
static volatile HAL_PIO_REGISTER_MAP hal_pio_registers[ PIN_MAX_NUMBER ] __attribute__((section(".peripherals")));
果然是对应寄存器的值
typedef struct
{
//lint -esym(754,HAL_PIO_REGISTER_MAP::*) Some of these aren't used directly.
uint32 pio_claim; //!< Peripheral claim register - register layout is different for a read compared to a write
uint32 pio_ctrl; //!< PIO_CTRL register
uint32 pio_irq_clr; //!< PIO_IRQ_CLR register
uint32 reserved_0; //!< Reserved
uint32 reserved_1; //!< Reserved
uint32 pio_ctrl_bitset; //!< PIO_CTRL_BITSET register
uint32 reserved_2; //!< Reserved
uint32 reserved_3; //!< Reserved
uint32 reserved_4; //!< Reserved
uint32 pio_ctrl_bitclr; //!< PIO_CTRL_BITCLR register
uint32 reserved_5; //!< Reserved
uint32 reserved_6; //!< Reserved
uint32 reserved_7; //!< Reserved
uint32 pio_ctrl_bittog; //!< PIO_CTRL_BITTOG register
uint32 reserved_8; //!< Reserved
uint32 reserved_9; //!< Reserved
} HAL_PIO_REGISTER_MAP;
看下FUNC的配置,这个应该是引脚复用图吧,难道每个引脚都可以随便作为任何功能?
typedef enum
{
FUNC_UNCLAIMED = ,
FUNC_GPIO = ,
FUNC_UART0_TXD = ,
FUNC_UART0_TXIR = ,
FUNC_UART0_O2 = ,
FUNC_UART0_O1 = ,
FUNC_UART0_RTS = ,
FUNC_UART0_DTR = ,
FUNC_UART0_RXD = ,
FUNC_UART0_RXIR = ,
FUNC_UART0_CTS = ,
FUNC_UART0_DCD = ,
FUNC_UART0_DSR = ,
FUNC_UART0_RI = ,
FUNC_UART1_TXD = ,
FUNC_UART1_TXIR = ,
FUNC_UART1_O2 = ,
FUNC_UART1_O1 = ,
FUNC_UART1_RTS = ,
FUNC_UART1_DTR = ,
FUNC_UART1_RXD = ,
FUNC_UART1_RXIR = ,
FUNC_UART1_CTS = ,
FUNC_UART1_DCD = ,
FUNC_UART1_DSR = ,
FUNC_UART1_RI = ,
FUNC_LPUART_RXD = ,
FUNC_LPUART_TXD = ,
FUNC_DBG_CLK0 = ,
FUNC_DBG_CLK1 = ,
FUNC_DBG_CLK2 = ,
FUNC_DBG_CLK3 = ,
FUNC_RADIO_PIO = ,
FUNC_UICC_CLK = ,
FUNC_UICC_RST = ,
FUNC_UICC_IO = ,
FUNC_DSP_TMS = ,
FUNC_DSP_TDI = ,
FUNC_DSP_TDO = ,
FUNC_DSP_TRST = ,
FUNC_SPI_SCLK = ,
FUNC_SPI_CSB = ,
FUNC_SPI_UNIDIR_IN = ,
FUNC_SPI_UNIDIR_OUT = ,
FUNC_SPI_BIDIR_DATA0 = ,
FUNC_SPI_BIDIR_DATA1 = ,
FUNC_SPI_BIDIR_DATA2 = ,
FUNC_SPI_BIDIR_DATA3 = ,
FUNC_DSP_TCK = ,
FUNC_RADIO_RFFE_SCLK = ,
FUNC_RADIO_RFFE_SDATA = ,
FUNC_PWM0 = ,
FUNC_PWM0B = ,
FUNC_PWM1 = ,
FUNC_PWM1B = ,
FUNC_SSP0TXD = ,
FUNC_SSP0RXD = ,
FUNC_SSP0TRX = ,
FUNC_SSP0CLK = ,
FUNC_SSP0FSS = ,
FUNC_SSP1TXD = ,
FUNC_SSP1RXD = ,
FUNC_SSP1TRX = ,
FUNC_SSP1CLK = ,
FUNC_SSP1FSS = ,
FUNC_I2C0_SDA = ,
FUNC_I2C0_SCL = ,
FUNC_I2C1_SDA = ,
FUNC_I2C1_SCL = ,
FUNC_UART2_TXD = ,
FUNC_UART2_TXIR = ,
FUNC_UART2_O2 = ,
FUNC_UART2_O1 = ,
FUNC_UART2_RTS = ,
FUNC_UART2_DTR = ,
FUNC_UART2_RXD = ,
FUNC_UART2_RXIR = ,
FUNC_UART2_CTS = ,
FUNC_UART2_DCD = ,
FUNC_UART2_DSR = ,
FUNC_UART2_RI = ,
FUNC_MAX = //!< Limit to range of valid values
} FUNC;
芯片的数据手册,这样说起来,这24个PIO可以复用到任何的外设上。现在问题是一共有40个PIO,说的是那24个PIO?

4. 说是PIO分为4个区域,每个区域的电压似乎可以不一样

海思NB-IOT模块HI2115芯片I2C通信的更多相关文章
- 海思Hi3518A 海思Hi3518C 海思Hi3518E 这几个芯片都有什么区别么
在3518A.3518C的基础上深化完善,推出了Hi3518E.作为新一代IP民用摄像机SoC,Hi3518E集成新一代ISP,优化了编码前图像处理算法,采用新一代H.264编码器.同时采用业内领先的 ...
- 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)
海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器) 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图 ...
- [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...
- 海思 Hi3516A Hi3518E V200 芯片介绍
海康是生产监控摄像头和硬盘录像机的,海思是提供机器里芯片的,海思属于华为的. http://www.hisilicon.com/en/Products/ProductList/Surveillance ...
- 第2季:从官方例程深度学习海思SDK及API
2.1.官方mppsample的总体分析2.1.sample的整体架构(1)sample其实是很多个例程,所以有很多个main(2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析 ...
- Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
前言 目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启Hi3516系列的开发教程. Hi3516DV300芯片介绍 Hi3516DV300为专业行Smart IP ...
- RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台
EasyRTSPClient是EasyDarwin开源流媒体团队开发.提供的一套非常稳定.易用.支持重连的RTSPClient工具,接口调用非常简单,再也不用像调用live555那样处理整个RTSP ...
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
- 海思3531添加移远EC20 4g模块(转)
源: 海思3531添加移远EC20 4g模块 Hi3798移植4G模块(移远EC20)
随机推荐
- Struts2与Hibernate联合开发步骤
hibernate与struts2的联合开发步骤: 1. 建立web工程 2. 加入jar包,struts2.hibernate.数据库连接的包 3. 数据表和bean之间的映射,以及相应的映射文件* ...
- 如何设置活动监视器中的可见作业数能显示更长范围之内的作业(如何让bpdbjobs/Active Monitor显示更多作业信息)
一.问题: 如何设置可以使得活动监视器中的可见作业数能显示更长范围之内的作业(即NBU软件不要自动删除活动监视器中短时间内(如8天)内的作业记录)? 二.解决方法: 默认情况下在Ac ...
- v-bind:的基本用法
1. v-bind:class(根据需求进行选择) <style> .box{ background-color: #ff0; } .textColor{ color: #000; } . ...
- HDU 1249 三角形(三角形分割平面)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1249 三角形 Time Limit: 2000/1000 MS (Java/Others) Me ...
- Knowledge Point 20180308 拔下forEach的外衣
剖析加强for 很长一段时间对于foreach都有一种误解,那就是foreach只是普通for的包装,底层还是普通for循环,直到深入了解迭代器的时候,才发现自己错了,本节就来探讨一下foreach, ...
- oracle sqldrl命令与以及ctl文件
具体操作如下: 第一步:先编辑好数据控制文件 xx.ctl,如test.ctl options(skip=1) --跳过第一行(看实际情况) load data infile 'C:\Users\ ...
- OC中自定义init方法
---恢复内容开始--- 我们知道,在函数中实例化一个对象,大多数会同时进行初始化,如 Person *p =[ [Person alloc]init]; 此时已经进行了初始化,使用init方法,那么 ...
- stl学习之namespace
一.为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C++ ...
- 关于iconfont symbol引入字体的方式
1,下载想要使用的图标集合 2,下载的压缩包解压到将要使用的目录下: 3,使用: 4,效果
- hadoop生态搭建(3节点)-08.kafka配置
如果之前没有安装jdk和zookeeper,安装了的请直接跳过 # https://www.oracle.com/technetwork/java/javase/downloads/java-arch ...