海思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)
随机推荐
- PHP中使用substr()截取字符串出现中文乱码问题该怎么办
一.使用mbstring扩展库的mb_substr()截取就不会出现乱码了. 可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与sub ...
- STL - next_permutation 全排列函数
学习: http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html http://blog.csdn.net/ac_gibson/article/deta ...
- .net打印
<input type="button" onclick="javascript:printit()"></input>//打印整个ht ...
- 理解JavaScript数据类型
JavaScript有5种基本数据类型: 数值(number):整数和小数(比如1和3.14) 字符串(string):字符组成的文本(比如"Hello World") 布尔值(b ...
- C#一键显示及杀死占用端口号进程
private void t_btn_kill_Click(object sender, EventArgs e) { int port; bool b = int.TryParse(t_txt_gu ...
- java序列化报错
Main.javat mainsr &java.util.Collections$UnmodifiableList�%1�� L listq ~xr ,java.util.Collection ...
- linux c 获取当前时间 毫秒级的 unix网络编程
#include <time.h> #inlcude <sys/time.h> char *gf_time(void) /* get the time */{ struct t ...
- HDU 1045 Fire Net(DFS 与8皇后问题类似)
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- kakfa 开发-01
kafka 开发梳理 使用内置的zoookeeper启动 bin/zookeeper-server-start.sh config/zookeeper.properties tips: 出现0.0.0 ...
- .NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态
新建一个.NET Core控制台程序,输入如下代码: using System; using System.Threading; using System.Threading.Tasks; class ...