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通信的更多相关文章

  1. 海思Hi3518A 海思Hi3518C 海思Hi3518E 这几个芯片都有什么区别么

    在3518A.3518C的基础上深化完善,推出了Hi3518E.作为新一代IP民用摄像机SoC,Hi3518E集成新一代ISP,优化了编码前图像处理算法,采用新一代H.264编码器.同时采用业内领先的 ...

  2. 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)

    海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器) 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图 ...

  3. [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

    IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...

  4. 海思 Hi3516A Hi3518E V200 芯片介绍

    海康是生产监控摄像头和硬盘录像机的,海思是提供机器里芯片的,海思属于华为的. http://www.hisilicon.com/en/Products/ProductList/Surveillance ...

  5. 第2季:从官方例程深度学习海思SDK及API

    2.1.官方mppsample的总体分析2.1.sample的整体架构(1)sample其实是很多个例程,所以有很多个main(2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析 ...

  6. Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试

    前言   目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启Hi3516系列的开发教程.   Hi3516DV300芯片介绍   Hi3516DV300为专业行Smart IP ...

  7. RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台

    EasyRTSPClient是EasyDarwin开源流媒体团队开发.提供的一套非常稳定.易用.支持重连的RTSPClient工具,接口调用非常简单,再也不用像调用live555那样处理整个RTSP ...

  8. 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

    (本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...

  9. 海思3531添加移远EC20 4g模块(转)

    源: 海思3531添加移远EC20 4g模块 Hi3798移植4G模块(移远EC20)

随机推荐

  1. Java---页面之间传值跳转

    从首页A进入页面B,然后从B页面登录,成功后跳转到A页面,并打印一句话“登录成功”,传值需要用的后台的. 在B页面写: <%     session.setAttribute("key ...

  2. BZOJ4530:[BJOI2014]大融合(LCT)

    Description 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它 ...

  3. php------中文出现乱码解决方法

    中文出现乱码解决方法:原因编码格式不一致 [1]  建立数据库的时候,字符集选择utf-8  数据库,点表名,点右键,数据库属性…. [2]  修改myspl的配置,在[myspld]模块下面添加ch ...

  4. ASP.NET Web API编程——文件下载

    断点续传基本原理 HTTP协议中与断点续传相关的HTTP头为:Range和Content-Range标头,断点续传实现流程: 1)客户端请求下载一个文件,文件的总长度为n:已经下载了一部分文件,长度为 ...

  5. 【转】计算Java List中的重复项出现次数

    本文演示如何使用Collections.frequency和Map来计算重复项出现的次数.(Collections.frequency在JDK 1.5版本以后支持) package com.qiyad ...

  6. HDU 1286 找新朋友 (欧拉公式或者标记法(其实就是欧拉公式的思想))

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others)    M ...

  7. asp.net mvc HtmlHelperExt EnumDropDownList

    public static class HtmlHelperExt { public static MvcHtmlString EnumDropDownList<TEnum>(this H ...

  8. Vue教程:Class 与 Style 绑定(四)

    绑定 HTML Class 对象语法 ①.添加单个class: <div v-bind:class="{ active: isActive }"></div> ...

  9. win8开发

    http://msdn.microsoft.com/library/default.aspx

  10. 【前端框架-Vue-基础】$attr及$listeners实现跨多级组件的通信

    父子 A 组件与 B 组件之间的通信: (父子组件) 如上图所示,A.B.C三个组件依次嵌套,按照 Vue 的开发习惯,父子组件通信可以通过以下方式实现: A to B 通过props的方式向子组件传 ...