mstar 平台I2C 配置
芯片的pin 脚可以用作不同的功能,总结一句就是外设进行状态和数据交换。
最常用的是作为GPIO,设置为输出模式时,通过高低电平来控制一些外围设置;
// 如LED,屏的电源,背光的开关,功放的静音等等。 除了控制设置之外,还需要和外部设置传输数据。
pin 作为GPIO 设置为IN时,是获取外设的高低来判断外设的状态,最常用的一些source 通道的detect,及一些wakeup 功能。
pin 作为SAR 口,获取ADC值; // 如按键板,参照“mstar平台SAR口使用”
pin 作为UART / SPI /SD 口;
pin 作为I2C 口;
一般来说,大部分有特殊功能的Pin脚其实都可以作为GPIO使用,但是当我们将其配置成特殊功能后,就不能同时配为GPIO。
所以当我们发现某个Pin脚我们想将其配成GPIO后,却没办法改变它的高低状态时,就要留意一下该Pin脚是否已经被误配为特殊功能了,这时就需要我们先DISABLE 掉这个特殊功能之后,才能设置成GPIO及其状态设定。每个chip有对应一个init GPIO配置,BD_MST{$Board}.h, drvpadconf.c.
标准GPIO口配置
总共时钟状态
#define GPIO_NONE 0 // Not GPIO pin (default)
#define GPIO_IN 1 // GPI
#define GPIO_OUT_LOW 2 // GPO output low
#define GPIO_OUT_HIGH 3 // GPO output high
特殊口配置
uart 口配置
特殊功能的pin 需要在BD_MST{$Board}.h 中配置。
#define DISABLE 0
#define ENABLE 1
#define CONFIG_PADMUX_MODE0 0x00
#define CONFIG_PADMUX_MODE1 0x01
#define CONFIG_PADMUX_MODE2 0x02
#define CONFIG_PADMUX_MODE3 0x03
#define CONFIG_PADMUX_MODE4 0x04
#define CONFIG_PADMUX_MODE5 0x05
#define CONFIG_PADMUX_MODE6 0x06
#define CONFIG_PADMUX_MODE7 0x07
#define CONFIG_PADMUX_MODE8 0x08
#define CONFIG_PADMUX_MODE9 0x09
#define CONFIG_PADMUX_UNKNOWN 0xFF
例如UART3,UART4 配置成了CONFIG_PADMUX_MODE1,其实也是ENABLE。接着在drvPadConf.c 文件中设置寄存器值。
针对UART3,UART4 设置了寄存器0x1e05 的bit2,0x1e04的bit6 。这样就配置完成了。
I2C 总线功能配置
下面我们以I2C2 为例

I2C 的clk,data 脚分别连接在AD16,AC16 两个pin 上面。比较特殊的是这两个pin 都是有复用功能的。所以我们需要disable掉其特殊功能LED/tcon。在BD_MST160D_AH_M7221.h中我们可以关闭LED功能
#define PADS_LED_MODE DISABLE
Tcon[11],Tcon[12], 未找到,属于备用的暂不处理
寄存器设置
#ifdef PADS_LED_MODE
#if (PADS_LED_MODE != CONFIG_PADMUX_UNKNOWN)
#define _CONFIG_LED_MODE ((PADS_LED_MODE == ENABLE) ? BIT4 : 0)
_RVM1(0x1eb4, _CONFIG_LED_MODE, BIT4),
#if (PADS_LED_MODE == DISABLE)
_MEMMAP_PM_,
//reg_seperate_wol_led_is_gpio
_RVM1(0x0e39, BIT7, BIT7),
//reg_led_is_gpio
_RVM1(0x0e39, 0, BIT0),
_MEMMAP_nonPM_,
#endif
#endif
#endif
disable 掉特殊功能之后,开始配置I2C 功能
//SWI2C
#define PAD_DDCR_CK_IS_GPIO GPIO_IN //I2C-SCL (EEPROM)
#define PAD_DDCR_DA_IS_GPIO GPIO_IN //I2CM-SDA (EEPROM)
#define PAD_TGPIO0_IS_GPIO GPIO_IN //TUNER_SCL
#define PAD_TGPIO1_IS_GPIO GPIO_IN //TUNER_SDA
*#define PAD_GPIO19_IS_GPIO GPIO_IN //I2C2-SCL
#define PAD_GPIO20_IS_GPIO GPIO_IN //I2C2-SDA*
将GPIO19,GPIO20 配置成了GPIO_IN,接着进行寄存器配置。如下:
#if(PAD_GPIO19_IS_GPIO != GPIO_NONE)
#define PAD_GPIO19_OEN (PAD_GPIO19_IS_GPIO == GPIO_IN ? BIT1: 0)
#define PAD_GPIO19_OUT (PAD_GPIO19_IS_GPIO == GPIO_OUT_HIGH ? BIT0: 0)
_RVM1(0x2b08, PAD_GPIO19_OUT, BIT0),
_RVM1(0x2b08, PAD_GPIO19_OEN, BIT1),
//reg_tconconfig11
_RVM1(0x1ea1, 0, BIT3), //reg[101ea1]#3 = 0b
//reg_agc_dbg
_RVM1(0x1e9e, 0, BIT7), //reg[101e9e]#7 = 0b
//reg_led_mode
_RVM1(0x1eb4, 0, BIT4), //reg[101eb4]#4 = 0b
//reg_seconduartmode
_RVM1(0x1e05, 0, BIT1 | BIT0), //reg[101e05]#1 ~ #0 = 00b
//reg_od2nduart
_RVM1(0x1ea9, 0, BIT1 | BIT0), //reg[101ea9]#1 ~ #0 = 00b
//reg_miic_mode0
_RVM1(0x1edc, 0, BIT0), //reg[101edc]#0 = 0b
#endif
#if(PAD_GPIO20_IS_GPIO != GPIO_NONE)
#define PAD_GPIO20_OEN (PAD_GPIO20_IS_GPIO == GPIO_IN ? BIT1: 0)
#define PAD_GPIO20_OUT (PAD_GPIO20_IS_GPIO == GPIO_OUT_HIGH ? BIT0: 0)
_RVM1(0x2b09, PAD_GPIO20_OUT, BIT0),
_RVM1(0x2b09, PAD_GPIO20_OEN, BIT1),
//reg_tconconfig12
_RVM1(0x1ea1, 0, BIT4), //reg[101ea1]#4 = 0b
//reg_agc_dbg
_RVM1(0x1e9e, 0, BIT7), //reg[101e9e]#7 = 0b
//reg_led_mode
_RVM1(0x1eb4, 0, BIT4), //reg[101eb4]#4 = 0b
//reg_seconduartmode
_RVM1(0x1e05, 0, BIT1 | BIT0), //reg[101e05]#1 ~ #0 = 00b
//reg_od2nduart
_RVM1(0x1ea9, 0, BIT1 | BIT0), //reg[101ea9]#1 ~ #0 = 00b
//reg_vx1gpi_mode
_RVM1(0x1e4a, 0, BIT1 | BIT0), //reg[101e4a]#1 ~ #0 = 00b
//reg_miic_mode0
_RVM1(0x1edc, 0, BIT0), //reg[101edc]#0 = 0b
//reg_extint5
_RVM1(0x1ea5, 0, BIT5), //reg[101ea5]#5 = 0b
#endif
其实配置成GPIO_IN 容易和 标准GPIO IN 模式产生误解。应该区别一下定义成IIC_MODE等其他宏,然后drvpadconf.c 文件中,设置寄存器即可。寄存器值的设置才是pin 的功能设置的本质。这样就完成mboot里面pin的功能定义。
————————————————
mstar 平台I2C 配置的更多相关文章
- 美图WEB开放平台环境配置
平台环境配置 1.1.设置crossdomain.xml 下载crossdomain.xml文件,把解压出来的crossdomain.xml文件放在您保存图片或图片来源的服务器根目录下,比如: htt ...
- 第二步 在D2RQ平台上配置jena环境
第二步 在D2RQ平台上配置jena环境 2013年10月16日 9:48:53 搞了这么长时间语义,只用过protege这样的工具,一直没有落实到实际代码上.jena也看过好久了,总认为是hp公司的 ...
- 基于认证的代理平台搭建配置squid-20130730
基于认证的代理平台搭建配置squid-20130730 功能:通过squid代理实现 (1)基于用户名密码认证的出口ip路由选择 (2)基于client源ip的出口ip路由选择 (3)基于连接本机ip ...
- Windows平台安装配置mysql数据库
Windows平台安装配置mysql数据库 作者:Eric 微信:loveoracle11g 去下载mysql软件 https://www.mysql.com/downloads/ https://d ...
- Eclipse平台下配置Go语言开发环境(Win7)
<Go语言编程>中写到:“从功能和易用性等方面考虑, Eclipse+GoEclipse.LiteIDE这两个环境在所有IDE里面是表现最好的”,所以笔者打算采用Eclipse+GoEcl ...
- 微信公众平台——基础配置——服务器配置:PHP版
在自己的服务器上新建一个空白php文件,输入以下任一版本的代码,如下: 版本一: <?php $token = "dige1994"; $signature = $_GET[ ...
- Nginx在Windows平台的配置
Nginx在Windows平台的配置 能够使用Nginx搭建Tomcat集群,并完成负载均衡. 1.什么是Nginx 2.为什么使用Nginx 背景: 互联网飞速发展的今天,大用户量高并发已经成为互联 ...
- Mstar 平台(648)唤醒之串口唤醒
串口唤醒功能主要是从supernova 待机进入PM后,串口接收PC端口发送过来的特定字串,然后将主板唤醒的功能.与IR,KEYPAD,WOL,CEC,MHL 等等基本流程一致,触发源不一样而已. 待 ...
- Hadoop平台常用配置及优化建议
当发现作业运行效率不理想时,需要对作业执行进行性能监测,以及对作业本身.集群平台进行优化.优化后的集群可能最大化利用硬件资源,从而提高作业的执行效率.本文记录了在hadoop集群平台搭建以及作业运行过 ...
随机推荐
- 剑指前端(前端入门笔记系列)——Math对象
Math对象 ECMAScript将一些常用的数学公式和信息封装到了一个对象中——Math对象,为我们实现数学方面的计算功能提供了便捷,而且该对象还提供了辅助完成这些计算的属性和方法 属性 con ...
- HTML5 多媒体标签
一.多媒体 embed 标签 embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等.url为音频或视频文件及其路径,可以是相对路径或绝对路径. 语法格式: < ...
- prometheus学习系列一: Prometheus简介
Prometheus简介 prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundclou ...
- 【Mysql异常】[HY000][1030] Got error 28 from storage engine
原因: 应该是磁盘空间不足导致 可通过 df -h 查看部署mysql的服务磁盘空间使用情况
- C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...
- httprunner学习11-辅助函数debugtalk.py
前言 在httprunner里面,每个 YAML / JSON 文件的脚本都是独立运行的,有时候我们希望能跨文件使用公用的参数. 比如登录生成一个token,后面的用例都可以去引用这个token值,或 ...
- 前端模板引擎artTemplate.js
. 关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用.初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为ha ...
- Graylog-centos安装
graylog安装 1.先决条件 yum install java-1.8.0-openjdk-headless.x86_64 -y #安装java软件包 yum install epel-relea ...
- nginx,apache,tomcat的区别
nginx与apache 这里说的apche指apache http server ,与nginx都属于http服务器软件,主要处理静态资源. http server关心的是http协议层面的传输和访 ...
- MongoDB mongoimport 从csv导入数据指定字段类型
mongoimport:指定字段的类型,防止将数字型的字符串导入成数值类型 1.正常模式导入 mongoimport -d idpad_zl -c trs_action_dzwl_zm --type ...