- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式技术应用教程基于S3C2410第九章.
第九章 实验系统I/O口扩展
由于实验箱上的资源众多,几乎每一个设备资源都要使用片选信号或中断信号或一些串口的信号,以及一些寄存器的地址等等,这样一来,S3C2410A的I/O资源是不能满足的。为了解决这个问题,达盛公司的ARM9实验系统采用了复杂可编程逻辑器件(CPLD)作为I/O口扩展芯片。CPLD单元使用S3C2410A的片选是NGCS4,地址是00达盛公司ARM9实验系统所用CPLD为Xilinx公司的XC9536,所扩展的设备为实验箱上的DISPLAY KEY和INTPUT OUTPUT两部分,如图9.1所示。
图9.1
模块名称 相应说明 HD7279: 0= 0 - HD7279的DATA PIN方向为输入
tmp = 0 - HD7279的DATA PIN方向为输出
0= 0 - HD7279的CS有效,选择HD7279
tmp = 0 - HD7279的CS无效,释放HD7279
0= 0 - HD7279的CLK变低
tmp = 0 - HD7279的CLK变高
0= 0 - HD7279的DAT变低
tmp = 0 - HD7279的DAT变高 总线接口 ELAB_CS0:0---0x200009ff
ELAB_CS1:0---0x200007ff
ELAB_CS2:0---0x200005ff
ELAB_CS3:0---0x200003ff 模拟
输入输出: 74ls244地址: 074ls273地址: 0 UDA1341: 0x2000000c = 0 - L3DATA置0
tmp = 0x2000000c - L3DATA置1
0x2000000d = 0 - L3CLOCK置0
tmp = 0x2000000d - L3CLOCK置1 9.1 INPUT OUTPUT
1. 这部分具体电路为:
图9.2 输入电路
图9.3 输出电路
输入电路如图9.2所示,单刀双掷开关K600~K607一端接到上拉排阻RP600上,另一端接到GND上。开关的掷刀接到了图9.3跳线开关的一端上,跳线开关的另一端接到了8位的三态缓冲器74LS244的输入上。74LS244的功能是当控制引脚为低电平时,输出电平等于输入电平,即当74LS244的Pin1=0b且Pin19=0b时,输入A等于输出Y。74LS244的电路框图和真值表为:
图9.4 74LS244的电路框图和真值表
输出电路如图9.3所示,S600~S607为跳线开关,此处跳线开关应该是短接的。图9.2上74LS244的输出D0~D7接到了8位锁存器74LS273上,74LS273的输出接到了8个LED上。从图上看,8个LED是共阳极连接,即74LS273输出低电平时,8个LED将会发光。74LS273的电路框图和真值表为:
图9.5 74LS273的电路框图和真值表
74LS244和74LS273的控制地址为0操作这个地址即对74LS244和74LS273两个芯片进行操作。
例如:设计一个程序,使8个拨动开关来控制8个LED的亮灭。主程序程序清单如下:
void Main(void)
{
int i;
unsigned char data_74ls244;
Target_Init();
while(1)
{
data_74ls244 = (*(volatile unsigned *)0;//读74ls244输出端
//口的值
for(i=0;i1000;i++);//延迟
(*(volatile unsigned *)0 = data_74ls244;//写74ls273
}
}
2. 分析:
首先定义一个变量存储开关状态(高电平还是低电平),这一步就是要掷刀74LS244的输出是什么,也即需要读取74LS244的输出值;然后将读到的开关状态写入锁存器74LS273控制LED。在程序中用(*(volatile unsigned *)0的方式来对74LS244和74LS273
文档评论(0)