I2S

i2s有3个主要信号线

  • 位时钟(BCLK),即对应数字音频的每一位数据。BCLK的频率=2×采样频率×采样位数
  • 帧时钟LRCK,用于切换左右声道的数据。LRCK的频率等于采样频率
  • 串行数据SDATA,就是用二进制补码表示的音频数据。

有时会使用主时钟,做相位同步使用

i2s传输模式:标准模式(第一个位不管)、左对齐模式、右对齐模式

TDM为多路传输格式<一个时钟周期内,连续传输多路信号>

I2C

基本信息
sda与scl两根线;传输速率为100k,400k,3.4M ;单字节传输(7bit地址 ,1bit读写);总线电容400uf限定(超过会出故障)
开始
scl保持高,sda由高到低
结束
sda由低到高结束
每次master发完8bit之后,等待ACK回应
写操作
1) 主发送地址(7+写) 从ACK
2) 主发送寄存器 从ACK
3) 主发送数据 从ACK
4) 主停止
读操作
1) 主发送地址(7+读) 从ACK
2) 主发送寄存器 从ACK
3) 主发送start
4) 主发送地址(7+读) 从ACK
5) 从发送数据,主接收,发ACK
6) 结束
驱动知识
i2c总线维护着两个链表 i2c驱动(设备驱动程序) & i2c设备(硬件设备的抽象)
i2c_adapter 适配驱动和设备(i2c_client),如何发送及时序的控制

程序从框架上分三层:
第一层i2c_core:
1) 注册i2c驱动/设备
2) 将驱动加入到链表中,遍历链表进行设备的匹配
3) 调用i2c驱动的probe操作
第二层i2c_adapter
第三层硬件层操作

UART

串口UART(通用异步收发器) —— 两根线通信(波特率需要一致)
数据传输格式:起始位,数据,校验位,停止位 LBS方向传输
驱动:tty_core --> serial_core --> serial具体实现 --> uart_driver读写操作

SPI

四根线:cs片选,sclk,miso,mosi
驱动: 标准的device、driver结构的字符设备驱动
主要结构体:spi_tranfer数据结构及缓冲区封装 spi_message消息封装

触摸屏touchpanel

基本原理
用手指触摸触摸屏时,所触摸的位置(以坐标形式)由触摸屏控制器检测,并通过接口(如RS-232串行口)送到CPU,从而确定输入的信息。
触摸屏控制器(卡)的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行:
触摸屏分类
触摸屏一般分为:电阻触摸屏、电容式触摸屏、红外线触摸屏、
电阻触摸屏:两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,这种接通状态被控制器侦测到后,进行A/D转换,并将得到的电压值与5V相比即可得到触摸点的Y轴坐标,同理得出X轴的坐标,这就是所有电阻技术触摸屏共同的最基本原理
电容式触摸屏:电容屏是利用人体的电流感应工作的,任何非导电物体如指甲、手套等都无法被屏幕下方的电容感应系统所识别。
自电容与互电容

  • 在玻璃表面用电极材料制成横向与纵向电极阵列,两个轴分别与地的电容值
  • 互容屏设计也是如此,只是横向与纵向阵列接触点位置,相互电容的值
    电阻屏与电容屏区别
  • 电阻屏需要压力,电容屏需要导电触碰
  • 电阻屏更进准(用笔按压),且不受磁场干扰
  • 电阻屏在阳光下,因为额外的屏幕层面反射阳光使得可视效果较差
    红外线触摸屏:
    架框的四边排列了红外线发射管及接收管,在屏幕表面形成一个红外线网。用户以手指触摸屏幕某一点,便会挡住经过该位置的横竖两条红外线,电脑便可即时算出触摸点的位置.
    缺点: 分辨率低、易受环境干扰而误动作。优点: 不受电磁干扰,不用专门在屏上镀膜

触摸屏常见故障

  1. 误报点,跳点,断线等主观情况
  • 屏幕损坏
  • 固件起始坐标定义,屏幕分辨率,灵敏度太高
  • 工作电压不稳
  • 射频干扰(电容屏
  1. 功能报点错误
  • 查看驱动报点getevent 及 framework程序
  1. 鬼点问题(自容屏)
  • 确认屏幕是自容屏还是互容屏,支持报点数等方面具体有很大优势,而自容屏体,受限于硬件设计和成本,只能支持假两点的方式,并且在限制区域会出现报鬼点等现象,且无法优化。
  1. 光感效果。 提高灵敏度,区域性的操作。
    通话时,区域性监测,上报休眠键值;通话完成后恢复

驱动实现
i2c驱动 + 初始化操作 + 中断操作读寄存器 + input上报事件 + framework程序
input子系统

  1. 单点触控与多点触控
    单点触摸信息是以ABS承载并按一定顺序发送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。
    多点触摸信息则是以 ABS_MT承载并按一定顺序发送,如ABS_MT_POSITION_X、ABS_MT_POSITION_Y,然后通过调用 input_mt_sync()产生一个 SYN_MT_REPORT event来标记一个点的结束,告诉接收方接收当前手指的信息并准备接收其它手指的触控信息。最后调用 input_sync()函数上报触摸信息开始动作并告诉接收方开始接收下一系列多点触摸信息。
  2. input输入子系统分为3层
    上层(输入事件驱动层handlers)
    中层(输入核心层input_core)
    下层(输入设备驱动层driver设备)
    工作过程:<一次鼠标按下事件>
    1) 触发中断
    2) 将按键信息上报给input core层
    3) input core层处理好了之后就会上报给input event层(handler层),封装成一个input_event结构体放入一个缓冲区中
    4) 应用层读取事件。
    上层framework实现
    1) 底层上报时间 /dev/input/event
    2) inputManagerService
    > inputReaderThread 负责读取事件
    > inputDispatcherThread 负责分发事件
    3) inputDispatcherThread分发事件会用到 WindowManagerService(窗口的管理) <确定发给哪一个app窗口>
    事件注入:<程序主动发起input事件>
    1) inputManager接口函数实现
    2) input工具,在system/bin
    3) 直接写/dev/input/event

LCD

驱动框架
1)

  1. 上层节点 /dev/fb*
  2. fbmem.c 提供统一的操作接口。 file_operation: fb_read, fb_write, fb_mmap, fb_ioctrl (对上创建fb节点,对下执行具体fb_info操作)register_framebuffer
  3. 驱动程序实现
    1)分配fb_info,配置fb_info,注册fb_info
    2)fb_info
    var参数(可变参数 帧同步/行同步/像素点/分辨率等)
    fix参数(fb缓存,内存映射长度等)
    fb_ops具体操作实现

LCD工艺分类
无源阵列显示屏(STN)和有源阵列显示屏(TFT)的显示:

  • TFT每一个像素都配备了一颗单独的晶体管来作为控制源,可以保证每一个像素在完成后保持不变,直到下一帧到来
  • STN是无控制源的显示屏,没有对单独的像素进行实时控制。<用电场改变原为180度以上扭曲的液晶分子的排列从而改变旋光状态,外加电场通过逐行扫描的方式改变电场,在电场反复改变电压的过程中>

STN 每一点的恢复过程较慢,因而产生余辉. 亮度也不如TNT屏

调色板
RGB三原色存储。32位色中的24位用来保存颜色信息(R8G8B8),另外的8位用来保存ALPHA信息,ALPHA属性就是透明度

PQ调试
色温:关闭PQ调试,只打开色温,观察整机的实际表现进行观察,针对实际表现对色温进行微调。纯白色画面,可以略微添加一点点红色,画面会看起来更加舒服。得到初步的色温规格,需要确定初步的标准色温、冷色温和暖色温规格,并保存到PQ数据表里面。
Gamma: <光强和灰度一个幂函数映射曲线>
针对色坐标,做拟合曲线,曲线曲率的客观标准是2.2,偏离这个标准越多,色彩一致性越差,如果偏离超过5%,需要做Gamma校准。
对比度和锐利度
使用专用的对比度图片,在灯箱下调整PQ。 边缘锐度也是如此
调整降噪
使用带噪声的测试视频,如sony_test系列视频,用PQ工具测试调节降噪的强度,对画面噪点进行弱化处理

MIPI协议
MIPI是Mobile Industry Processor Interface的缩写。
MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。为了把移动设备内部的接口如摄像头、显示屏、基带、射频接口等标准化。
DSI分层结构
• PHY 定义了传输媒介,输入/输出电路和和时钟和信号机制。物理层上包含一个时钟lane和多个数据lane
1)低功耗(Low-Power)信号模式(用于控制):10MHz (max)
2) 高速(High-Speed)信号模式(用于高速数据传输):80Mbps ~ 1Gbps/Lane
• Lane Management层:发送和收集数据流到每条lane。 (处理层—中间两层)
• Low Level protocol 层:定义了如何组帧和解析以及错误检测等。
• Application层:描述高层编码和解析数据流。 (应用层)
Command或Video操作模式两种模式

  • Command模式是指采用发送命令和数据到具有显示缓存的控制器,主机通过命令间接的控制外设。Command模式用于发送指令,传输速率较低,精确率高
  • Video模式是指从主机传输到外设采用时实象素流。这种模式只能以高速传输。为减少复杂性和节约成本,只采用Video模式的系统可能只有一个单向数据路径。用于发送帧数据,传输速率高,精确率低

总线外设基础1——i2s,i2c,uart,spi,touchpanel,lcd相关推荐

  1. 【Linux驱动】驱动设计硬件基础----串口、I2C、SPI、以太网接口、PCIE

    1.前言 常见的外设接口与总线的工作方式,包括串口.I2C.SPI.USB.以太网接口.PCI和PCI-E.SD和SDIO等. 2.串口 RS-232.RS-422与RS-485都是串行数据接口标准, ...

  2. SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别

    SPI.I2C.I2S.UART.GPIO.SDIO.CAN.JTAG的区别 SPI 全称及由来:SPI接口的全称是"Serial Peripheral Interface",意为 ...

  3. I2S,PCM,IOM-2,I2C,SPI,UART,GPIO

    概述 I2S,PCM,IOM-2都是数字音频接口,传数据的. I2C,SPI,UART,GPIO是控制接口,传控制信令的. I2S I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频 ...

  4. GPIO,I2C,SPI,UART,USART,USB的区别

    1.简单区别: 1) GPIO(General Purpose Input Output )为通用输入/输出,通用端口,总线扩展器, 利用工业标准I2C.SMBus™或SPI™接口简化了I/O口的扩展 ...

  5. I2C和SPI总线对比,RFID及NFC区别

    I2C是半双工,SPI的全双工,uart是全双工. 单工.半双工.全双工 单工数据传输只支持数据在一个方向上传输: 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输 ...

  6. [转]关于I2C和SPI总线协议的优缺点

    关于I2C和SPI总线协议 IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral ...

  7. I2C和SPI总线优缺点对比

    IIC vs SPI现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影 ...

  8. 关于I2C和SPI总线协议

    IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影 ...

  9. UART SPI I2C 接口介绍 转载

    UART SPI I2C 接口介绍@TOC 做单片机开发时UART,SPI和I2C都是我们最经常使用到的硬件接口,我收集了相关的具体材料对这三种接口进行了详细的解释. UART UART是一种通用串行 ...

  10. 串行通信协议(I2C、SPI、UART、SCCB、CAN)

    推荐一部书,在这本书里面介绍了I2C.SPI.UART和CAN等通信协议,写的蛮不错的. 串行通信:设备与设备之间,传输数据按顺序依次1bit位接1bit位进行传输. 并行通信:设备与设备之间,通过多 ...

最新文章

  1. Java springMVC POI 导出 EXCEL
  2. linux proxy服务器
  3. history linux 日志服务器_Linux日志分析
  4. Linux 分割、合并文件
  5. 优秀学生专栏——孙振涛
  6. ie手机浏览器_Flash之后是不是该IE浏览器了
  7. php 面试靠快速排序,搞定PHP面试 - 常见排序算法及PHP实现
  8. 三、Dart Hello World
  9. 恢复 管理员密码 新建管理员账号
  10. 刷题——必备十二大网站
  11. 【测试】软件测试报告应该包含哪些内容
  12. 前端获取本地ip地址
  13. 输入两个数求之间的平方数
  14. 2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...
  15. centos rpm漏洞补丁下载
  16. 背出来matlab就无敌了
  17. 宝塔显示100%负载100%cpu解决办法
  18. 晨枫U盘维护工具V2.0版(转)
  19. 概率论 第三章习题课
  20. python dialect='excel'是什么意思_python excel自动化写入大数据量数据

热门文章

  1. 使用vb.net调用bartender并打印标签
  2. 安卓耳机左右音量调节_安卓/IOS系统通用耳机调音PCBA 按键调节音量 一键转换三星苹果...
  3. android 周月切换日历,vue-week-picker实现支持按周切换的日历
  4. 内存管理单元(MMU)与内存控制器
  5. Solidworks常用插件介绍
  6. 深度学习非自回归语音合成与自回归语音合成对比
  7. gnuplot 入门教程 1
  8. uniapp 微信小程序的弹框文字换行
  9. sketch(一)--安装和介绍
  10. 顺序表的十个基本操作(全)