| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【PIC单片机】-- IIC相关知识 -> 正文阅读 |
|
[嵌入式]【PIC单片机】-- IIC相关知识 |
文章目录 00 写在前面该系列的文章,源自于担任过PIC单片机课程的助教,主要向学弟们讲解了几节实验课的内容。在此记录上课的一些知识。 本系列文章主要介绍的内容: 实验2–MPLAB+PICkit 3+LCD+I/O(这次主要是介绍液晶显示屏的使用,很多时候我们系统的调试都需要用到,比如做一个测温系统,那我们就可以通过液晶显示屏,显示传感器采集的数值,然后再通过软件来做进一步的处理) 实验3–ADC(这个是模数转化实验,就是之前模数电学习那些知识的一个综合运用) 实验4–串行通信–UART 实验5–串行通信–I2C 实验6–计时器和中断(这一部分也是很重要的知识点,在很多的嵌入式系统中都会用到,比如用单片机再加几个传感器就可以搭出智能车,智能车就会用到计时器、中断这些内容) 01 IIC相关知识同步通信: 异步通信: 上节课我们讲的是异步通信,而今天我们要讲的是IIC是同步通信; 另外有一点上节课我们有讲到过串口模块我们可以用PIC单片机本身内部提供的,也可以选择普通的IO引脚,通过模拟时序得到串口通信。而今天的IIC模块也是类似的道理,我们PIC单片机内部已经集成了IIC模块,我们只要操作相应寄存器即可。当然我们也可以通过普通的IO引脚,通过模拟时序得到IIC通信。 接下来我们打开芯片手册: **基本上我们之前讲课的时候,都是先介绍完外设的基本内容,然后接下去就讲解寄存器。**今天这个外设就是多了一个点,需要了解一下时序,了解完时序之后我们再来讲寄存器。 02 时序最基本就是启动信号、停止信号、数据有效信号 因为PIC内部封装了芯片,所以只要让寄存器的某一位配置为某一值,就可以产生这个信号。 接下来我们看两个主要时序:就是在主模式下的发送端(对应写时序)、接收端(对应读时序); 虚线框内这部分是启动信号,接着SCL产生9个脉冲,SDA要发送8个数据;刚开始是发送器件的地址,比如今天咱们要进行写操作的对象就是24C256_EEPROM; 这个时序是发送时序,所以很显然,我们这个R/W非 == 0.最后一位其实是方向位,就是你是接受数据还是发送数据。 只要SEN=1,就会产生这个方框里面的信号;如何是用51单片机,就需要用两个引脚模拟这两个时序。启动产生之后,硬件自动清零。 启动标志位SSPIF,SSP的中断标志寄存器,中断标志位,启动信号产生后,中断信号会置位;如果要检查是否有正常启动,就检测SSPIF有没有置位。数据发完之后,又会置位。 BF位:跟SSPBUF是否有数据有关;发送完就是置0; SEN:启动信号 R/W非:IIC的特性位; RCEN:接受使能位;每次在接受一帧数据之前都要让RCEN置1; ACKSTAT:这一位是用来判断从设备有没有给你发送应答信号,这一位是由硬件自动置位; RSEN:数据的传送方向一旦改变,就必须重新启动一下 03 寄存器在MSSP模型中,与IIC模型相关的寄存器有六个: SSPSTAT:主控同步串行口状态寄存器SMP这一位是用来选择通信速率的,我们通常是使用100khz,所以我们选择1 WCOL:写冲突检测位,置0 最后SSPCON ==0x38; GCEN:不用管 初始化的时候先全部设置为0即可。 SSPADD: 04 外设模块EEPROM那我们知道PIC单片机这个IIC通信方式之后,接下来我们就来介绍一个外设模块,也就是E2PROM,我们知道EEPROM是一个内存单元,我们可以往里面读或者写数据,那这个模块的读或者写的方式是通过IIC通信来进行的。 我们每学习一个外设,我们首先要知道它要如何使用,那这个时候就是需要看该外设的芯片手册,所以接下来我们需要讲一下EEPROM芯片手册的知识。今天我们要讲的这个是24C256这个芯片,除此之外还有24C02、24C04、24C08、24C16、24C32、24C64、24C128等等. 然后这个256K是位,如果换成字节就是32K字节 那大家第一次看着玩意可能会觉得,不知道要看啥。我带着大家看一遍。 我这边网上找了一份中文版,我们等等对照着看: 特性、概述、管脚的封装、内部方框图、电气特征(直流特征、交流特征) 这些咱们可以先不管 接下来是讲该芯片的引脚: 接下来是一些信号的时序: 启动信号: 器件寻址: 所以我们一条总线上面可以连接8个24C256,然后我们根据A2\A1\A0的情况就可以选择对其中某一个24C256进行操作。 接下来是选择读信号还是写信号,1是读0是写。写完之后,从设备会发送一个应答信号。 写操作: 应答查询: 读操作: 从13页开始,就是芯片封装的一些信息,我们操作单片机就用不到了,这个通常是在画PCB的时候会用到;所以我们后面那部分也不用管它。 所以我们在来总结一下,虽然这个芯片手册有38也,但是后面那26页不用看,前面4页也不太需要看,总共其实就是阅读中间这8、9页。 那中间这8、9页的话,刚刚我们讲了:就包含三部分内容,第一部分:引脚相关信息;第二部分:启动信号、结束信号、应答信号、数据有效的一些时序;第三部分:如何进行读操作和写操作。 05 结尾大家记得点赞收藏!!! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:35:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |