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集群平台搭建以及作业运行过 ...
随机推荐
- echarts的最外层配置项
每次查echarts的官网上边的配置项不知道分别代表什么,必须点开才知道,所以在这做下Echarts配置项的简单记录 最外层的配置项: title:进行标题与副标题的显示隐藏,位置,字体颜色,字体大小 ...
- 另类WebShell监测机制--基于auditd
鸣 谢 VSRC感谢业界小伙伴——老陈投稿精品原创类文章.VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将有好礼相送,我们为您准备的丰富奖品包括但不仅限于:MacbookAir.VSRC定制 ...
- 升级.net core 3.x 后mvc项目调试状态编辑view代码不能实时预览
https://stackoverflow.com/a/58126955 简单来说 需要在nuget上安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilati ...
- MySQL用户及权限
1. MySQL根据对象级别划分的权限类别: 常见的权限类别:库级别.表级别.字段级别.管理类权限.程序类权限 管理类权限: CREATE TEMPORARY TABLES 创建临时表,一般为16M; ...
- centos7配置jdk8环境变量
最近在Linux的环境下配置jdk,参照网上的一些教程出现了一些问题,原因大致是由于centos的系统版本不同或者是jdk的版本不同导致出现了一定的问题.包括常规的因为classpath配置不对出现的 ...
- win10开机启动vmware虚拟机【亲测可用】
创建vbs脚本放到开机启动目录: set ws=createobject("wscript.shell") ws.run """C:\Program ...
- Linux 环境变量配置错误,导致所有命令找不到
今天配置环境变量,PATH设置出错,所有的命令都找不到了,提示说在/usr/bin/下面可以找到,但是cd过去以后还是不行,自己也在其他路径上找了,还是没找到 而且是公司开发机,怕耽误事儿,着实吓了一 ...
- Centos系统的升级
文章来源:https://blog.csdn.net/kikajack/article/details/79396793 系统及内核版本: [root@node5 ~]# cat /etc/redha ...
- jenkins与gitlab集成,分支提交代码后自动构建任务(六)
一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...
- RIG exploit kit:恶意活动分析报告——像大多数exploit kit一样,RIG会用被黑的网站和恶意广告进行流量分发
RIG exploit kit:恶意活动分析报告 from:https://www.freebuf.com/articles/web/110835.html 在过去的几周里,我们曾撰文讨论过Neutr ...