历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2019年10月18日 | 24C02在PIC单片机系统中的应用

2019-10-18 来源:eefocus

    MICROCHIP公司的PIC16系列单片机以其精简的指令和较强的端口驱动能力在各个领域得到广泛的应用。在需要储存较大数量数据的控制领域,24C02可以解决PIC16C8×系列单片机片内EEPROM不足的问题,用以保存诸如用户设置参数、采集到的数据等。


    由于部分PIC单片机不具备I2C总线接口,在应用时必须用软件法加以解决。


    在软件编制时应当严格遵循I2C总线规则,并注意24C02的片内读写周期时间,调整好程序流程,以避免写不进、读不出的问题。


    下面将笔者在实际工作中遇到的问题和解决的方法进行简单的介绍,希望可以给同行一些帮助。


    首先约定,数据由微处理器发送到24C02称“写”、“发”,反之称“读”、“收”。24C02支持顺序读写和随机读写,文中以随机读写方式为例进行介绍。


    一、硬件电路(如图1所示)。
    使用微处理的任意两个通用I/O端口(图中用RA2、RA3)作为与24C02的连接,其中一个作为时钟SCL线,另外一个作为数据SAD线。两个端口均接22kΩ上拉电阻。


    二、软件设计


    首先简要介绍一下用EEPROM的I2C总线的规则。
    初始状态时,SCL、SDA两线都为高。


    当SCL为高电平时,如果SDA线跌落,认为是“起始位”。
    当SCL为高电平时,如果SDA线上升,认为是“停止位”。
    除此之外,在发送数据的过程中当SCL为高电平时,SDA应保持稳定。
    ACK应答位指在此时钟周期内由从器件(EEPROM)把SDA拉低,表示回应。这时主器件(PIC16微处理器)的SDA口的属性应该变为输入以便检测。


    1. 在写数据周期应该依次执行以下过程:
    1)发“起始位”。2)发“写入代码”(8bit),1010(A1A2A3)0,其中的A1、A2、A3三位是片地址,由24C02的硬件决定,文中采用000。3)收“ACK”应答(1bit)。4)发EEPROM片内地址(即要写入EEPROM的什么位置)(8bit)。从00到FF中的任意一个,对应EEPROM中的相应位。5) 收“ACK”应答(1bit)。6)发要发送的数据(8bit),即要存储到EEPROM中的数据。7)发“停止位”。


    接下来,如图2所示,进入轮询程序以便检验24C02片内写周期是否完成。如果已经完成则进入下一个字节的写操作过程。如果没有完成则继续等待,直到完成。


    2. 在读数据周期,依次执行以下过程:
    1)发“起始位”。2)发“写入代码”(8bit),1010(A1A2A3)0,其中A1、A2、A3三位是片地址,由24C02的硬件决定,文中采用000。3)收“ACK”应答(1bit)。4)发“EEPROM”片内地址(即要读出EEPROM的位置)(8bit)。从00到FF中的任意一个,对应EEPROM中的相应位。5)收“ACK”应答(1bit)。6)发“起始位”(1bit)。7)发“读出代码”(8bit),1010(A1A2A3)1,其中A1、A2、A3三位是片地址,由24C02的硬件接线决定,文中采用000。8)接收。9)发ACK应答。10)发“停止位”。


    要特别注意的两个问题是:1)24C02有一个约10ms的片内写周期。在这个周期内,24C02是不对外界的操作作出反应的。2)在发送数据的过程中,要确保当SCL为高电平时,SDA保持稳定。


    解决第一个问题的常见方法有两个,其一为采用延时等待,确保在写过程中,在一个字节完成发送了停止位之后,微处理器等待足够的时间,通常应该超过10ms,再送下一个字节,这段时间用来等待EEPROM完成片内写周期。另一个是采用轮询的方式,判断EEPROM是否完成了片内写周期。这种方式的主导思想是,当向EEPROM发送写标志后,正常情况下,EEPROM应该有ACK应答。但是当EEPROM在进行片内写周期的时候,则不会产生这样的应答。程序据此判断,EEPROM是否完成了片内的写周期程序。如果完成,则可以继续写入下一个要写的内容,否则继续等待。


    第一种方法编程较为简单,但是会浪费大量的机器时间,并且程序的延时时间不好确定。第二种方法的优点在于,虽然编程较为复杂,但是较为快速,对其余的程序模块影响较少,便于完成程序的模块化设计。


    对于在发送数据的过程中,要确保当SCK为高电平时,SDA必须保持稳定,应该在程序中利用软件给予保证。


    如果可以很好的解决以上两个问题,数据的写入和读出是方便快捷和可靠的。

 

推荐阅读

史海拾趣

Glow-Lite Corp公司的发展小趣事

对于红外遥控发射电路,网友可能会有多方面的问题。以下是一些可能的问题及其详细回答:

一、红外遥控发射电路的基本工作原理是什么?

回答
红外遥控发射电路的基本工作原理是,当用户按下遥控器上的某个按键时,遥控器内部的微控制器(CPU)会读取与该按键对应的二进制数据,并通过信号调理电路进行处理。随后,这些数据被调制电路转换为适合传输的信号,并经过放大后,由红外线发射二极管以红外光的形式发射出去。接收设备上的红外接收头接收到这些红外光信号后,会将其转换为电信号,并经过进一步的处理还原为原始的控制指令,从而实现遥控功能。

二、红外遥控发射电路常见的故障有哪些?

回答
红外遥控发射电路常见的故障主要包括以下几个方面:

  1. 电池电量不足或接触不良:这是最常见的故障之一,当电池电量不足或电池卡簧接触不良时,会导致遥控器无法正常工作。

  2. 按键故障:按键上的导电橡胶易磨损、老化,或按键电路中的铜箔线条断裂、开焊等,都会导致按键失灵。

  3. 振荡电路故障:振荡电路中的陶瓷谐振器易受到机械冲击而损坏,导致振荡频率偏移或停振,进而影响遥控信号的发射。

  4. 红外发光二极管故障:红外发光二极管可能因引脚开焊、内部开路或失效等原因而无法正常工作。

  5. 驱动电路故障:驱动电路中的晶体三极管、电阻等元件可能因开路、放大系数下降等原因导致故障。

  6. 编码集成电路故障:编码集成电路是整个遥控器的核心部分,其内部集成了多个复杂的电路。如果编码集成电路发生故障,将直接影响遥控信号的生成和发射。

三、如何判断红外遥控发射电路是否故障?

回答
判断红外遥控发射电路是否故障,可以采用以下几种方法:

  1. 观察指示灯:如果遥控器上有指示灯,可以通过观察指示灯是否闪亮来判断遥控器是否有红外信号发射。

  2. 替换法:用一个确认无故障的遥控器去控制同一台设备,如果控制有效,则说明原遥控器可能存在故障。

  3. 万用表检测:使用万用表测量遥控器电池电压、按键电阻、红外发光二极管两端电压等,以判断电路是否正常。

  4. 收音机检测:利用收音机的中频载波与遥控器振荡频率接近的特点,通过收音机接收遥控器发出的信号来判断遥控器是否具有发射能力。

四、如何维修红外遥控发射电路的故障?

回答
维修红外遥控发射电路的故障,需要根据具体的故障原因采取相应的措施。以下是一些常见的维修方法:

  1. 更换电池:如果电池电量不足或接触不良,应更换新电池或清理电池卡簧。

  2. 清洁按键:如果按键故障是由于导电橡胶磨损或灰尘等杂物造成的,可以用软布蘸无水酒精清洗按键表面。

  3. 更换元件:如果振荡电路、红外发光二极管、驱动电路或编码集成电路等元件损坏,应更换相应的元件。

  4. 焊接修复:如果电路中存在开焊、断裂等现象,应使用焊接工具进行修复。

  5. 调整电路:如果故障是由于电路参数设置不当或元件老化等原因造成的,应对电路进行调整或更换老化元件。

通过以上方法,可以有效地解决红外遥控发射电路中的常见故障。

灿科盟(Ckmtw)公司的发展小趣事

灿科盟电子实业有限公司成立于2003年8月,注册资金100万。公司创始人凭借在电子行业多年的积累,决定创立自有品牌“CKMTW”,专注于连接器产品的研发与生产。在初创阶段,公司面临着资金紧张、市场竞争激烈等挑战,但凭借坚定的信念和不断的技术创新,逐渐在市场中站稳脚跟。

Fastron公司的发展小趣事

Fastron公司深知产品质量对于企业的重要性。因此,公司建立了严格的质量控制体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制和管理。Fastron还引进了先进的检测设备和技术手段,确保每一款产品都符合高标准的质量要求。这种对品质的执着追求使得Fastron的产品在市场上具有极高的竞争力。

ApexTool Group公司的发展小趣事

在电子行业中,不同客户对电动工具的需求各异。Apex Tool Group深知这一点,因此提供了定制化服务,根据客户的具体需求设计和生产电动工具。有一次,一家大型电子企业因为特殊生产工艺的需要,对电动工具提出了特殊要求。Apex Tool Group迅速响应,组织研发团队进行攻关,最终成功研发出符合客户需求的定制化产品。这一成功案例不仅展示了Apex Tool Group的技术实力,也进一步巩固了与客户的合作关系。

Colibrys SA公司的发展小趣事

随着市场的不断扩大和客户需求的多样化,Colibrys逐渐发展成为一站式制造商。公司提供从设计到制造以及最终测试的完整供应链服务,确保客户能够安全、高效地采购到一流性能的MEMS产品。这种服务模式不仅提高了公司的市场竞争力,也赢得了客户的广泛认可和信赖。

BALLUFF公司的发展小趣事

作为一家世界领先的传感器制造商,BALLUFF公司始终坚持全球化战略与本土化发展的结合。在全球60多个国家设有代表处,并在38个国家拥有销售、生产和开发的子公司。同时,公司在德国、美国、瑞典、巴西、匈牙利、中国和日本等地建立了自动化产业和能源产业生产基地。这种全球化布局使得BALLUFF能够更好地服务全球客户,满足不同地区的市场需求。同时,公司也注重本土化发展,通过深入了解当地市场和客户需求,不断推出符合当地市场需求的产品和服务。

这五个故事展示了BALLUFF公司在电子行业中的发展历程和取得的成就。从初创时期的机械修理厂到如今的全球传感器制造领军企业,BALLUFF凭借其技术创新、产品质量和市场拓展能力,不断在电子行业中取得突破和进展。同时,公司也积极适应市场变化,不断调整战略和业务模式,以适应全球化趋势和客户需求的变化。

问答坊 | AI 解惑

秀偶的STM32-3.2寸TFT-ADS830-IDT7205示波器完工!完全开源!60M采样速率!!

最近一直在玩STM32和LCD屏,从字符到TFT,从1.8到3.5寸,挨个都摸了个摸,公司产品出来了,可一直想用这些东东来作点什么. 示波器上班用公司的,虽说也是便携的,但也不好带回家去用呵,看看市场上动辙千元以上,唉,还是自己动手来DIY方便自己,也造福网友 ...…

查看全部问答>

【请推荐一块数据I/O接口卡】

需要选择一款数字I/O卡,主要是用来进行信号的延时,输入的是光电开关转换的数字量,经过I/O卡的延时处理,输出触发信号去驱动摄像机进行数据采集,延迟大约0.5秒,速度不需要很快,希望用过类似性价比比较高的高手推荐一款,价格在1000元以内。…

查看全部问答>

vxworks目标机运行一段时间后就失去一切网络连接了,有可能是什么原因造成的呢?

我的基于vxworks5.5(tornado2.2)的嵌入式系统负责计费,并及时将信息通过网络(ftp功能)传到服务器上。 可是经常在运行一段时间后(例如几个小时,或者一天以后)发现失去了网络连接。 ftp, telnet都无法连到目标机上,但是系统其他功能还正常, ...…

查看全部问答>

无线蹭网卡网上热卖

“买块无线网卡就能免费上网。”这等“好事”正是日渐庞大的蹭网族所在做的——用邻居家的无线网络上网,就算加密了也能破解。此类无线网卡如今正在网上热卖。记者在淘宝网上找到上海一家WiFi产品专营店,店主极力推荐一款售价299元的USB无线网卡“ ...…

查看全部问答>

初学者,CCS2.2的程序加载和烧写有什么不同,各在什么时候用?

初学者,CCS2.2的程序加载和烧写有什么不同,各在什么时候用?先谢谢了!!…

查看全部问答>

2812最小系统PCB板子购买求助

近期准备学习DSP,现在手头有一块2812芯片,想买块板子自己焊接(最小系统),于是上淘宝转了转,发现淘宝卖2812最小系统板的商家特别少。 目前在淘宝上看中了两块板子,可是同样是最小系统这两块板子差价惊人:一块20元、另一块130多(板子整体质 ...…

查看全部问答>

微机消谐

微机消谐中液晶函数中不需要加判忙语句,只要加3到5个us延时即可. 3.31版本前的频率判断有问题,会经常性的进不去中断,程序算法问题.待改进.  …

查看全部问答>

TI国赛细则!

马上就要开始到南京参见TI杯全国赛了,对于比赛的细则不是很了解,有参加过TI全国赛的大神们能否详解下竞赛规则。比如竞赛全封闭,到底怎么个全封闭的形式,    手机能带吗?    可以上网吗?    可以带书吗? & ...…

查看全部问答>

zigbee有关指定入网的说明

在工程simpleapp工程文件中有个sapi.c文件中有个API专门指定某个设备是否可以入网/****************************************************************************** * @fn          zb_PermitJoiningRequest  ...…

查看全部问答>

李想STM32视频教程下载地址

李想老师讲解的STM32单片机视频,讲的通俗易懂,上去看看吧。 https://download.eeworld.com.cn/detail/zhangdaijinqf/551611 …

查看全部问答>