芯片的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 配置的更多相关文章

  1. 美图WEB开放平台环境配置

    平台环境配置 1.1.设置crossdomain.xml 下载crossdomain.xml文件,把解压出来的crossdomain.xml文件放在您保存图片或图片来源的服务器根目录下,比如: htt ...

  2. 第二步 在D2RQ平台上配置jena环境

    第二步 在D2RQ平台上配置jena环境 2013年10月16日 9:48:53 搞了这么长时间语义,只用过protege这样的工具,一直没有落实到实际代码上.jena也看过好久了,总认为是hp公司的 ...

  3. 基于认证的代理平台搭建配置squid-20130730

    基于认证的代理平台搭建配置squid-20130730 功能:通过squid代理实现 (1)基于用户名密码认证的出口ip路由选择 (2)基于client源ip的出口ip路由选择 (3)基于连接本机ip ...

  4. Windows平台安装配置mysql数据库

    Windows平台安装配置mysql数据库 作者:Eric 微信:loveoracle11g 去下载mysql软件 https://www.mysql.com/downloads/ https://d ...

  5. Eclipse平台下配置Go语言开发环境(Win7)

    <Go语言编程>中写到:“从功能和易用性等方面考虑, Eclipse+GoEclipse.LiteIDE这两个环境在所有IDE里面是表现最好的”,所以笔者打算采用Eclipse+GoEcl ...

  6. 微信公众平台——基础配置——服务器配置:PHP版

    在自己的服务器上新建一个空白php文件,输入以下任一版本的代码,如下: 版本一: <?php $token = "dige1994"; $signature = $_GET[ ...

  7. Nginx在Windows平台的配置

    Nginx在Windows平台的配置 能够使用Nginx搭建Tomcat集群,并完成负载均衡. 1.什么是Nginx 2.为什么使用Nginx 背景: 互联网飞速发展的今天,大用户量高并发已经成为互联 ...

  8. Mstar 平台(648)唤醒之串口唤醒

    串口唤醒功能主要是从supernova 待机进入PM后,串口接收PC端口发送过来的特定字串,然后将主板唤醒的功能.与IR,KEYPAD,WOL,CEC,MHL 等等基本流程一致,触发源不一样而已. 待 ...

  9. Hadoop平台常用配置及优化建议

    当发现作业运行效率不理想时,需要对作业执行进行性能监测,以及对作业本身.集群平台进行优化.优化后的集群可能最大化利用硬件资源,从而提高作业的执行效率.本文记录了在hadoop集群平台搭建以及作业运行过 ...

随机推荐

  1. 金融finaunce财经

    金融 (经济学术语) 金融是货币资金融通的总称.主要指与货币流通和银行信用相关的各种活动.主要内容包括: 货币的发行.投放.流通和回笼:各种存款的吸收和提取:各项贷款的发放和收回:银行会计.出纳.转账 ...

  2. Tomcat 8.5版本文件上传后无权限访问的问题

    之前在tomcat 7下文件上传后访问一直没问题,现在tomcat版本升到8.5,在测试文件http上传时,发现所传文件无法通过nginx访问了. (Tomcat具体版本为8.5.11) PS:tom ...

  3. linux配置iptables

    iptables主要用来配置防火墙.其是一个需要特别谨慎设置的东西,服务器不在身边,不要贸然设置,有可能导致无法SSH,那就麻烦了. 1.首先介绍一下指令和相关配置文件 启动指令:service ip ...

  4. Node初识

    初识Nodejs Node.js的诞生 作者Ryan Dahl 瑞恩·达尔 2004 纽约 读数学博士 2006 退学到智利 转向开发 2009.5对外宣布node项目,年底js大会发表演讲 2010 ...

  5. vue脚手架中动态引用图片的办法

    需要先导入: import logo_st_ga from '../assets/big_st_ga.png'; import logo_st_sp from '../assets/big_st_sp ...

  6. Django 配置mysql遇到问题(一)

    问题一: django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have ...

  7. Oracle数据表字段小写转大写

    BEGIN FOR c IN ( SELECT COLUMN_NAME cn FROM all_tab_columns WHERE table_name = '表名' ) loop BEGIN exe ...

  8. sudo的使用

    1. sudo:临时提权(提升权限)的工具通常,实际操作中,采用sudo的管理方式,临时的允许某个用户操作某些指令时,拥有root权限. 2. 使用方法: 配置sudo,决定,哪些用户,可以使用roo ...

  9. loadrunner中web_submit_data与web_submit_form区别

    以loadrunner自带的订票系统为例 当选择红框选中的模式时,所录脚本如下:回放时可以正常回放,登录成功 选另一种所录脚本如下:回放时登录不成功,session失效, 其中web_submit_f ...

  10. Keil的RTX特性

    Keil RTX是为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统.它允许您创建同时执行多个功能的程序,并帮助创建更好的结构和更容易维护的应用程序. 特征 具有源代码的免版权,确定性R ...