海思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)
随机推荐
- hdu 3068 最长回文_Manacher模板
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/neng18/article/details/24269469 pid=3068" rel= ...
- luogu P3801 红色的幻想乡
嘟嘟嘟 首先人人都能想到是线段树,不过二维线段树肯定会MLE+TLE的. 我们换一种想法,不去修改整个区间,而是修改一个点:开横竖两个线段树,分别记录哪些行和列被修改了.因为如果两阵红雾碰撞,则会因为 ...
- _bstr_t可接受多字节、UNICODE字符串,方便用以字符集转换
使用_bstr_t需要包含的头文件: #include <comutil.h> #include <comdef.h> // test.cpp : 定义控制台应用程序的入口点. ...
- 【CSS】易错
1.外边距默认是透明的,因此不会遮挡其后的任何元素.2.背景应用于由内容和内边距.边框组成的区域.3.外边距可以是负值,而且在很多情况下都要使用负值的外边距.4.不要给元素添加具有指定宽度的内边距,而 ...
- js秒换成天时分
js秒换成天时分 function timeStamp( second_time ){ var time = parseInt(second_time) + "秒"; if( pa ...
- MVC学习十三:RouteDebugger插件应用
1.下载第三方程序集RouteDebugger https://files.cnblogs.com/files/WarBlog/RouteDebugger.rar 2.把RouteDebugger程序 ...
- ListView 中嵌套 GridView
1.主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- JavaScript小练习3-用循环使三个DIV变色
题目 初始为黑色,点击后为红色,再次点击为黑色,以后每次点击一次变色. 分析 简单的onclick使用. button的居中可以在外套一个p元素,body中让p居中即可. 三个DIV块的居中,使用ma ...
- detach()之大坑:detach会引起局部变量失效引起线程对内存的非法访问题。
detach()之大坑:detach会引起局部变量失效引起线程对内存的非法访问题.一:传递临时对象作为线程参数(1.1)要避免的陷阱(解释一)(1.2)要避免的陷阱(解释一)事实一:只要用临时构造的A ...
- 走进MySQL
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...