- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
江汉大学嵌入式开发平台课程设计
项目名称:嵌入式开发平台应用设计
项目负责人:
学号:122208204118
姓名:刘奎
班级:12级嵌入式
指导老师:郑四海
目录
一、硬件电路分析 3
1.1 蜂鸣器硬件电路分析 3
1.2 数码管硬件电路分析 3
1.3 拨码开关硬件电路分析 4
1.4 LED点阵硬件电路分析 4
1.5 键盘硬件电路分析 5
三、驱动程序设计 5
2.1 按键中断设备加载函数 5
2.2 按键中断初始化函数 6
2.3 按键驱动的读函数 7
2.4 数码管驱动的写函数 8
2.5 按键驱动的中断处理函数 9
三、测试程序设计 ................................................................11
3.1 实验程序 11
四、实验详细步骤 13
五、总结 13
一、硬件电路分析
1.1 PXA270RP平台蜂鸣器分析
工作电阻R167根据继电器阻值采用0—100欧姆电阻
GP16端口配置为通用I/O的输出功能,控制蜂鸣器的发声和停止
1.2 数码管电路分析
74HC164是串行输入、并行输出接口器件,可用在单向的并行输出/并行地址锁存。
引脚LED_7SEG_CLK是时钟输入端口,当时钟的信号由低电平到高电平的时候输出端Q0,当时钟第二次由低电平变为高电平的时候将输出第二个数据到Q0,从而失败第一个数据到Q1
1.3 拨码开关电路分析
拨码开关分配的寄存器地址是0x0C01 4000,在上电以后,CPLD2将拨码开关的状态存入寄存器,CPU的这个地址寄存器上读数就可以读到相应的拨码开关的数据
1.4 LED点阵电路分析
8x8显示点阵模块,每块由64个独立的发光二极管,为了减少引脚且便于封装,各种LED显示模块的显示驱动智能采用阵列形式排布,即在行列线的交接点处接有显示LED。
LED的点亮和熄灭操作事实上就是对I/O内存的写操作。
1.5 键盘硬件电路分析
键盘中断信号由I/O/GCK2引脚发出,CPLD1探测到中段之后,同样的是配置CPU的GP0引脚,向CPU发出中断信号。在CPLD2中完成键值的扫描以及解析工作。
驱动程序设计
2.1按键中断设备加载函数
功能:
调用按键初始化函数对设备进行初始化,然后调用中断处理函数申请中断
代码:
static int __init pxa270_KEY_CTL_init(void)
{
int ret = -ENODEV;
static long *addr_status;
#ifdef OURS_KEY_DEBUG
printk (pxa270_KEY_CTL_init [ --kernel--]\n);
#endif
key_init();//调用键盘初始化函数,完成设备好的申请、设备的注册等工作
ret=request_irq(SIMPLE_KEY_IRQ, SIMPLE_KEY_interrupt, SA_INTERRUPT, keypad, NULL);//申请IRQ
if(ret){
printk(IRQ:could not register interrupt\n);
}
addr_status=ioremap(00x0f);
outb(0x20,addr_status); //选中CPLD2
return 0;
}
2.2 按键中断初始化函数
功能:
对设备号申请和设备的注册等操作进行复位重置,完成设备号的申请以及内存空间的分配等工作
代码:
static int key_init(void)
{
int result;
dev_t dev=MKDEV(key_major,0);
if(key_major) //申请设备号
result=register_chrdev_region(dev,1,keypad);
else
{
result=alloc_chrdev_region(dev,0,1,keypad);
key_major=MAJOR(dev);
}
if(result0)
return result;
key_devp
原创力文档


文档评论(0)