JZ2440 裸机驱动 第12章 I2C接口】的更多相关文章

本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信号类型 3 I2C总线的数据传输格式 12.1.2 S3C2410/S3C2440 I2C总线控制器 1. S3C2410/S3C2440 I2C总线控制器寄存器介绍     S3C2410/S3C2440的I2C接口有4种工作模式:主机发送.主机接收.从机发送. 从机接收.其内部结构如图12.6所…
本章目标:     掌握嵌入式开发的步骤:编程.编译.烧写程序.运行     通过GPIO的操作了解软件如何控制硬件 5.1 GPIO硬件介绍     S3C2440A有130个多功能输入/输出口引脚,分为A~J共9组:GPA.GPB.....GPH.GPJ. 5.1.1 管脚相关的寄存器     对于这几组GPIO引脚,它们的寄存器是相似的: ① GPxCON:用于选择管脚功能:     x为A.B.....H.J      PORTA与PORTB~PORTJ在功能选择上有所不同,GPACON…
本章目标:     了解S3C2410/S3C2440和触摸屏的结构:     了解电阻触摸屏的工作原理和等效电路图:     了解S3C2410/S3C2440触摸屏控制器的多种工作模式:     掌握S3C2410/S3C2440 ADC和触摸屏的编程方法: 14.1 ADC和触摸屏硬件介绍及使用 14.1.1 S3C2410/S3C2440      S3C2410/S3C2440  的ADC可以接收8个通道的模拟信号输入,并将它们转换 为10位的二进制数据.在2.5MHz的A/D转换时钟…
本章目标  了解LCD显示器的接口及时序: 掌握S3C2410/S3C2440 LCD控制器的使用方法: 了解帧缓冲区的概念,掌握如何设置帧缓冲区来显示图像: 13.1 LCD和LCD控制器 13.1.1 LCD显示器 1.LCD的种类 2.LCD的接口     CPU或显卡发出的图像数据是TTL信号(0~5V.0~3.3V.0~2.5V或0~1.8V),LCD 本身接收的也是TTL信号.由于TTL信号在高速的长距离传输时性能不佳,抗干扰能力 比较差,后来又剔除多种接口,比如LVDS.TDMS.…
本章目标      了解S3C2410/S3C2440的时钟体系结构     掌握通过设置MPLL改变系统时钟的方法     掌握在不同的频率下设置存储控制器的方法     掌握PWM定时器的用法     了解WATCHDOG定时器的用法 10.1 时钟体系及各类时钟部件 10.1.1 S3C2410/S3C2440时钟系统     S3C2410/S3C2440的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源:也 可以直接使用外部提供的时钟源,它们通过引脚的设置来选择.时钟控制逻辑给整…
本章目标:     了解S3C2410/S3C2440地址空间的布局     掌握如何通过总线形式访问扩展的外设,比如内存.NOR Flash.网卡等 ····································································································     总线的使用方法是嵌入式低层开发的基础,了解它之后,再根据外设的具体特性,就可以驱动外设了. 6.1 使用存储控制器访问外设的原理 6.1.…
本章目标  了解NAND Flash 芯片的接口 掌握通过NAND Flash控制器访问NAND Flash的方法 8.1 NAND Flash介绍和NAND Flash控制器使用     NAND Flash在嵌入式系统中的地位与PC上的硬盘类似,用于保存系统运行所需的操 作系统.应用程序.用户数据.运行过程中产生的各类数据.与内存掉电数据丢失不同, NAND Flash中的数据在掉电后仍可永久保存. 8.1.1 Flash介绍     常用的Flash类型由NOR Flash和NAND Fl…
13.2 TFT LCD显示实例 13.2.1 程序设计     本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线. 画圆.显示单色.使用调色板等. 13.2.2代码详解     本实例源码在/work/hardware/lcd目录下,与LCD相关的代码有3个文件:lcddrv.c. framebuffer.c和lcdlib.c(及相应的头文件).     (1)lcddrv.c封装了对LCD控制器.调色板的访问函数,可以设置LCD的显示模式. 开启/关闭LCD.设置调色板等…
本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明     UART用于传输串行数据:     发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出:     接收数据时,UART检测另一根电线上的信号,将串行收集放在缓冲区中,CPU即可读取 UART获得这些数据.     UART之间以全双工方式传输数据,最精简的连接方式只有3根线:TxD.RxD.Gn…
本章目标:     了解虚拟地址和物理地址的关系:     掌握如何通过设置MMU来控制虚拟地址到物理地址的转化:     了解MMU的内存访问权限机制:     了解TLB.Cache.Write buffer的原理,使用时的注意事项:     通过实例深刻掌握上述要点: 7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 内存管理单元(Memory Management Unit),简称MMU,它负责虚拟地址到物理 地址的映射,并提供硬件机制的内存访问权限…
本章目标:     了解ARM体系CPU的7种工作模式     了解S3C2410/S3C2440中断体系结构     掌握S3C2410/S3C2440的中断服务程序的编写方法 9.1 S3C2410/S3C2440 中断体系结构 9.1.1 ARM体系CPU 的7种工作模式     ARM体系的CPU有以下7种工作模式:     ① 用户模式(usr):ARM处理器正常的程序执行状态:     ② 快速中断模式(fiq):用于高速数据传输或通道处理:     ③ 中断模式(irq):用于通用…
前言 主要是想对Linux I2c驱动框架有一个整体的把控,因此会忽略协议上的某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型.sysfs等也不进行详细说明原理,涉及到i2c协议部分也只会简单带过,因为linux内核里面已经实现了该协议,我们以后并不需要重新实现这些,只需要对协议有个简单的了解.如果有任何错误地方,请指出,谢谢! 注:图片来自互联网 内核版本:2.6.35.6 I2c介绍 I2C是"Inter Integrated Circuit Bus"的缩写,中文译成…
第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法. 这个原则用来处理“胖”接口所存在的缺点.如果类的接口不是内敛的,就表示该类具有“胖”接口.换句话说,类的“胖”接口可以分解成多组方法.每一组方法都服务于一组不同的客户程序.这样,一些客户程序可以使用一组成员函数,而其他客户程序可以使用其他组的成员函数. ISP承认一些对象确实需要非内敛的接口,但是ISP建议客户不应该看到它们作为单一的类存在.相反,客户程序看到的应该是多个具有内敛接口的抽象基类. 12.1 接口污染 如果子类…
① I2C(Inter-Integrated Circuit)总线是由飞利浦公司开发的两线式串行总线,用于连接微控制器及其外围设备 ② I2C总线有两根双向信号线 (1)SDA:Serial Data Line(数据线) (2)SCL:Serial CLock Line(时钟线) ③ I2C总线寻址 (1)I2C总线协议规定,从设备采用7位的地址. * D7~D0:从设备地址 * D0位:数据的传送方向.“0”表示主设备向从设备写数据:“1”表示主设备由从设备读数据 注:主设备发送地址时,总线上…
在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然没调出来.如果有示波器,可能很快就能找到原因,现在完全不知道问题出在哪里.其实想用GPIO模拟I2C的目的很简单,以一种简单而又深刻的方式来理解I2C. 既然这条路暂时没法走,退而求其次,用s3c2440的…
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. 因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中. linux下的驱动思路 在linux系统下编写I2C驱动,目前主要有两种方法,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux下I2C驱动体系结构来完成.下面比较下这两种方法: 第一种方…
本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<I2C总线协议>. 若对I2C通讯协议不了解,可先阅读<I2C总线协议>文档的内容学习.若想了解SMBUS,可阅读<smbus20>文档. 关于EEPROM存储器,请参考“常用存储器介绍”章节,实验中的EEPROM,请参考其规格书<AT24C02>来了解. 23.1  I2…
第23章     I2C—读写EEPROM 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>及<I2C总线协议>. 若对I2C通讯协议不了解,可先阅读<I2C总线协议>…
一.何为异步   执行任务的过程可以被分为发起和执行两个部分. 同步执行模式:任务发起后必须等待直到任务执行完成并返回结果后,才会执行下一个任务. 异步执行模式:任务发起后不等待任务执行完成,而是马上执行下一个任务,当任务执行完成时则会收到通知. 面对IO操作频繁的场景,异步执行模式可在同等的硬件资源条件下提供更大的并发处理能力,也就是更大的吞吐量. 但由于异步执行模式打破人们固有的思维方式,并且任务的发起和任务的执行是分离的,从而提高编程的复杂度. 多线程.多进程均可实现异步模式. 二.从回调…
Linux就这个范儿 第12章 一个网络一个世界 与Linux有缘相识还得从一项开发任务说起.十八年前,我在Nucleus  OS上开发无线网桥AP,需要加入STP生成树协议(SpanningTreeProtocol).当时我对STP不太了解,只知道它是由一个名字叫man却不是man的,并有“互联网之母”称号的牛人发明的.于是就上网査找资料.那时参考资料很少,很幸运Linux上有STP的源码可以借鉴,从而顺利的在Nucleus上实现了STP,也因此与Linux结下了不解之缘.从那时起我就下决心不…
原文   第12章 代理模式(Proxy Pattern) 代理模式 概述: 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 结构图:     举例:       代练游戏,玩游戏,自己不想花时间去升级.委托给代练. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1…
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章       STM32H7的HAL库框架设计学习 通过本章节,主要是想让大家对HAL库程序设计的基本套路有个了解,防止踩坑. 12.1 初学者重要提示 12.2 HAL库的配置文件 12.3 HAL库的时间基准 12.4 HAL库的启动流程 12.5 HAL库初始化外设 12.6 HAL库的中断处理思路 12.7 HAL库的DMA处理思路 12.8 总…
第12章      示波器设计—DAC信号发生器的实现 本章节为大家讲解二代示波器中信号发生器的实现.这个功能还是比较实用的,方便为二代示波器提供测试信号.实现了正弦波,方波和三角波的频率,幅度以及占空比设置. 12.1   DAC的输出阻抗和使能缓冲问题 12.2   DAC驱动实现 12.3   信号发生器配置界面设计 12.4   信号发生器波形显示效果 12.5   总结 12.1  DAC的输出阻抗和使能缓冲问题 我们这里把F429的输出阻抗和使能缓冲问题放在最前面说. 使能了多缓冲后…
12章——DOM2与DOM3 为了增强D0M1,DOM级规范定义了一些模块. DOM2核心:为不同的DOM类型引入了一些与XML命名空间有关的方法,还定义了以编程方式创建Document实例的方法: DOM2级样式:针对操作元素的样式而开发: 其特性总结: 1.每个元素都有一个关联的style对象,可用来确定和修改行内样式: 2.要确定某个元素的计算样式,可使用getComgetComputedStyle()方法: 3.IE 不支持getComputedStyle()方法,但为所有元素都提供了能…
第12章 泛型程序设计 本章内容: * 为什么要使用泛型程序设计 * 定义简单泛型类 * 泛型方法 * 类型变量的限定 * 泛型代码和虚拟机 * 约束与局限性 * 泛型类型的继承规则 * 通配符类型 * 反射和泛型 使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性. 12.1 为什么要使用泛型程序设计 泛型程序设计(Generic programming)意味着编写的代码可以被很多不同类型的对象所重用. 12.2 定义简单泛型类…
第10章 典型用户和场景 10.2 规格说明书 10.3 功能驱动的设计 问题:怎样写好spec?功能驱动设计的功能设计阶段怎样实现一个具体的功能? 第11章 软件设计与实现 11.2开发阶段的日常管理 问题:如何在开发阶段应对这些意外的情况? 第12章 用户体验 12.1 用户体验的要素 问题:怎样给用户一个很好的第一印象,我们的产品应该怎样定位该产品的目标人群?怎样挖掘潜在的用户?怎样平衡用户体验和产品质量的冲突?…
第12章     GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 按键检测使用到GPIO外设的基本输入功能,本章中不再赘述GPIO外设的概念,如您忘记了,可重读前面"GPIO框图剖析"小节,…
第12章     GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx参考手册>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>. 按键检测使用到GPIO外设的基本输入功能,本章中不再赘述GPIO外设的概念,如您忘记了,可重读前面"GPIO框图剖析"小节,…
这篇文章主要介绍基本的驱动也是用的最多的协议类驱动中的SPI,I2C和UART.首先从最简单的UART也就是串口讲起: 1.UART UART由两根线也就是TX,RX以及波特率产生器组成,操作比较简单,配置好后,就可以发送接收数据了,注意有的MCU需要接收数据时清除某些标记.如: 2.SPI SPI一般有三根线组成即CLK,MOSI,MISO,数据输入和输出是单独的一根线.一般的操作都是先发控制指令,再发地址,接着才是数据.例: 3.I2C I2C一般由两根线组成,即SDA,SCL,一根时钟线,…
一:I2C设备操作方式: 1.  应用程序操作法:i2c的设备的驱动可以直接利用linux内核提供的i2c-dev.c文件提供的ioctl函数接口在应用层实现对i2c设备的读写,但是在应用层使用ioctl函数对应用程序员要求较高,需要自行构建msg结构体,必须了解设备的操作流程,时序之类的. 这方式实现需要用用程序员调用 read, write, ioctl, open, close等linux标准文件接口操作/dev/i2c(X)设备文件. 2. 驱动程序操作法:i2c设备的驱动也可以通过普通…