登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
AVR单片机论坛
›
AVR 外部并行接口器件扩展应用
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版
AVR 外部并行接口器件扩展应用
[复制链接]
2282
0
慧***
超级版主
发表于 2010-7-22 18:06:24
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
ATmega128片内的RAM有4K字节,这在8位
单片机
中算佼佼者。因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。这样不仅方便
PCB
板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。
对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。其主要特性有:
*外部并行扩展的地址从0x1100开始;
*使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;
*可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;
*可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。
5.5.1 外部扩展RAM存储器的设计
下图给出一个外部扩展32K的RAM(6264)的译码参考电路。
图中使用了一片74HC138和与门,与门的输出作为6264的片选信号,其地址空间为0x0000 –0x8FFF。74HC138其它7个引脚输出用于在地址大于0x9000以上空间扩展其它更多的并行接口器件,每根线选通的地址空间为4K。
由于ATmega128的RAM空间前4352个字节分配给芯片内部的通用寄存器、I/O寄存器和4K字节的内部SRAM,所以外部并行扩展器件的起始地址是从0x1100开始的(见第二章内容)。当MCU在对0X0000-0X10FF范围的SRAM地址空间操作时,实际是对芯片内部的SRAM或寄存器操作,尽管会影响地址总线、数据总线和ALE,但此时 和 不受影响,因此对相应的处在这段地址范围的外部扩展的存储器没有影响。在图5.6的设计中,实际上已经把6264中地址范围在0x0000-0x0FFF的一段存储单元“移”到ATmega128的RAM地址空间高端0x8000-0x8FFF处。当用户程序对0x8000-0x8FFF寻址操作时,实际是对外部存储器RAM芯片6264的0x0000-0x0FFF操作,即将外部RAM芯片的前4K个单元“移” 到ATmega128的32K地址空间后面了,因此系统总共有36KB可以使用的线形连续RAM。
当外部扩展RAM的起始地址是从0x1100开始的,即与内部RAM空间连续时,使用ICC
AVR
或CVAVR编写系统程序前,建议先使用程序生成器来生成一个使用外部扩展RAM的初始化程序作为参考。在程序生成器生成的初始化程序中,会将MCUCR寄存器中的SRE位置“1”(允许使用外部并行接口),还能帮助你正确的选择和设定并产生对不同区域使用不同操作时序的设置语句,以及如何将变量定义在特定的地址空间等。此外,在编译程序前,还要正确设置芯片的编译选项,告诉编译器使用外部RAM,以及大小等,这样编译器会自动的将变量分配到外部RAM空间。
5.5.2 外部扩展并行I/O接口设计
下图给出一个简单的外部扩展32位数字输入接口的参考电路。ATmega128外部并行扩展4片74HC373芯片(图中只画出1片),每选通一片74HC373,读入8位数字信号。
4片74HC373的选通信号由一片74HC00产生,选通地址分别为:0x2100、0x2200、0x2400、0x2800(或0x3100、0x3200、0x3400、0x3800)。注意,系统没有扩展外部的RAM,因此地址空间0x0000-0x10FF为片内SRAM,而空间范围在0x1100-0x20FF的一段为空地址,4个74HC373的选通地址也是不连续的。在这个设计中,ATmega128的高位地址线A6、A7没有使用,可以释放作为普通的I/O线使用。
下面是在ICCAVR环境下的应用例程。
#define ext_PORT1 (*(volatile unsigned char *)0x2100)
#define ext_PORT2 (*(volatile unsigned char *)0x2200)
#define ext_PORT3 (*(volatile unsigned char *)0x2400)
#define ext_PORT4 (*(volatile unsigned char *)0x2800)
void main(void)
{
unsigned char DATA;
MCUCR = 0x80; // 允许外部并行扩展接口
XMCRA = 0x00; // external memory
XMCRB = 0x02; // 释放PC7,PC6,作为通用I/O引脚使用
DDRC = 0xff; // PC7,PC6用于输出,(不影响PC0-PC5地址线)
PORTC = 0x00; // PC7,PC6输出0,(不影响PC0-PC5地址线)
DATA = ext_PORT1; //读取外部抗战接口1的数据到变量DATA中
If (ext_PORT3) PORTC |= 0x80; //外部接口3不为0时,PC7输出1
………
}
复制代码
程序中的4句#define使用了ICCAVR的强制指针变量的方式,在RAM绝对地址空间0x2100、0x2200、0x24000、x2800处定义了变量ext_PORT1~extPORT4,在程序中就可以方便的使用这4个变量对外部4个扩展口操作了。由于没有用到高位地址线PC7、PC6寻址和译码,程序中将起释放,作为普通的I/O口使用,也充分利用了ATmega128的特点。
在这个设计中,由于实际上并没有外部的扩展RAM,所以在编译程序前,要注意正确设置芯片的编译选项,告诉编译器不使用外部RAM,防止编译器将其它的变量分配到外部RAM空间中。
在CVAVR环境中,在RAM绝对地址空间0x2100、0x2200、0x24000、x2800处定义变量ext_PORT1~extPORT4应使用CVAVR的专用变量定义语句:
unsigned char ext_PORT1 @0x2100,ext_PORT1 @0x2100,ext_PORT1 @0x2100,ext_PORT1 @0x2100;
在编译程序前,也要注意正确设置芯片的编译选项,告诉编译器不使用外部RAM,防止编译器将其它的变量分配到外部RAM空间中。
举报
回复
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
产品品牌:永嘉微电/VINKA 产品型号:VK2C21C 封装形式:SOP20 概述 VK2C21C是
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
产品品牌:永嘉微电/VINKA 产品型号:VK2C21B 封装形式:SOP24 概述 VK2C2B是一
低成本、高性能、带EEPROM了解一下
无锡矽杰微电子的XCE855E 是一颗带 EEPROM 的 8 位单片机,专为多 IO 产品的应用而设
工控仪表/水电气表LCD驱动/抗干扰液晶段码
产品品牌:永嘉微电/VINKA 产品型号:VK2C21A 封装形式:SOP28 概述 VK2C21是一
为什么电动车会着火?原因是什么?电动车充
其实电动车起火的新闻我们也不是第一次看到了,让很多人对电动车的安全性产生质疑,但
更多
精华推荐
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
低成本、高性能、带EEPROM了解一下
工控仪表/水电气表LCD驱动/抗干扰液晶段码
软件模拟2812通信协议导致的种种问题,你遇
适用于电子鞭炮、电子蜡烛灯等方案的单片机
为什么电动车会着火?原因是什么?电动车充
性价比超高的国产单片机了解一下
更多
社区学堂
I2C通信接口段码液晶驱动芯片VK2C21C S
VK2C21B SOP24高抗干扰LCD液晶段码驱动
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
产品品牌:永嘉微电/VINKA 产品型号:VK2C21C 封装形式:SOP20 概述 VK2C21C是
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
产品品牌:永嘉微电/VINKA 产品型号:VK2C21B 封装形式:SOP24 概述 VK2C2B是一
低成本、高性能、带EEPROM了解一下
无锡矽杰微电子的XCE855E 是一颗带 EEPROM 的 8 位单片机,专为多 IO 产品的应用而设
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表