- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
led和蜂鸣器驱动(广州龙芯中科1B开发板),龙芯开发板,龙芯3b开发板,单片机开发板驱动下载,单片机开发板usb驱动,普中开发板驱动,单片机开发板驱动,51开发板驱动,linux驱动开发板,de0开发板驱动
1. 前言 3
2. 硬件电路 3
2.1. LED引脚 3
2.2. LED原理分析 4
2.3. 蜂鸣器引脚 5
2.4. 蜂鸣器原理分析 5
3. GPIO相关分析 6
3.1. 阅读CPU手册 6
3.2. Linux内核源码分析 6
4. 点亮一个led 9
4.1. 源码 9
4.2. 运行结果 13
5. 手动指定那个led亮 13
5.1. 源码 13
5.2. 运行结果 19
6. 蜂鸣器驱动 20
6.1. 源码 20
7. 参考资料 20
修订历史
版本号 更新日期 更新内容 V1.0 2013.9.13 创建
前言
由于龙芯资料较少,现在又有点时间,写了两句,仅供初学者入门时参考,还望高手多多指教。
硬件电路
LED引脚
先把电路图贴出来
我们选择LED9作为本次实验的对象。LED9接到龙芯1B的引脚T12
再查龙芯1B处理器的用户手册v1.9如下图
即CAN0_RX为GPIO38.,同理可得
Led6接GPIO39;led7接GPIO40;led8接GPIO41。如原理图所示
注意:这里有GPIO0,GPIO1,。。。。GPIO38,GPIO39。。。。到底表示什么意思啊?个人认为第一列的GPIO1,GPIO2,……为原理图中的编号,而第三列的GPIO38,GPIO39为CPU引脚编号,可以再CPU手册中找到。如前面的led9所示。这几个引脚可以在源码中定义为宏,详细请见后面代码,这里只贴出相关部分。
LED原理分析
LED又叫发光二极管,有正负两个极,只要在正负两极之间接上合适的正电压,LED就导通,并发光。这里只需要让CPU的GPIO引脚输出低电平,对应的LED就被点亮。
比如GPIO38输出低电平,即可点亮LED9。
蜂鸣器引脚
LED7接在CAN1_RX上,CAN1_RX经过电阻后接蜂鸣器,如下图所示
所以LED7和蜂鸣器共用一个引脚——GPIO40。
蜂鸣器原理分析
蜂鸣器通过NPN三极管提供所需的大电流,当GPIO40输出低电平时,NPN三极管截止,蜂鸣器不响;当输出高电平时,NPN三极管导通,蜂鸣器响。
由于LED7和蜂鸣器共用同一个引脚,并且为了开机后蜂鸣器不响(想起来烦人,哈哈)。所以引脚GPIO40必须输出低电平,恰好低电平使LED导通,所以LED7在开机后一直亮着。
GPIO相关分析
阅读CPU手册
首先看龙芯1B处理器的手册,其中对GPIO相关的寄存器有:配置寄存器,输入使能寄存器,输入寄存器,配置输出寄存器,MUX寄存器。根据经验,一般都是先配置GPIO为输入还是输出,然后读输入寄存器或者写输出寄存器实现输入输出功能。V1.9版的手册中写得还不是很清楚,我们这里也只能猜了。贴上手册中的截图
作为对比参考,我把其它CPU的截图也贴上
相比较而言,龙芯1B处理器手册写得太简单了,以至于没有说清楚。
Linux内核源码分析
现在我们来看一下linux内核中GPIO相关代码。
源码路径“linux内核根目录/arch/mips/loongson/ls1x/gpio.c”。
我们想实现的功能就是简单的在GPIO口输出高低电平。源文件gpio.c中有个函数ls1b_gpio_direction_output(),从函数名字上看好像能实现这个功能。具体分析一下。
/*
函数功能:直接在某个GPIO输出高电平或者低电平
入参:struct gpio_chip *chip 可以为空指针
unsigned gpio GPIO的序号
int level 电平值。1--高电平;0--低电平
*/
int ls1b_gpio_direction_output(struct gpio_chip *chip,
unsigned gpio, int level)
{
u32 temp;
u32 mask;
// 入参检查:判断是否超过最大的GPIO个数,即GPIO的合法性检查
if (gpio = STLS1B_N_GPIO)
return -EINVAL;
// 把高低电平值写到输出寄存器中
gpio_set_value(gpio, level);
// 由于寄存器是32位的,一个寄存器最多可以控制32个GPIO
// 就比如:配置寄存器,就有配置寄存器0和配置寄存器1
// 所以这里分开处理
if(gpio = 32){
// 获取锁,执行原子操作
spin_lock(gpio_lock);
mask = 1 (gpio - 32);
// 配置GPIO引脚为GPIO功能
temp = LOONGSON_GPIOCFG1;
temp |= mask;
LOONGSON_GPIO
您可能关注的文档
- 电子工艺实训考核装置技术参数及要求.doc
- 电子式三相卡电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相三线四线有功电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相卡预付费电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相多功能复合电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相无功电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相有功无功组合电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相有功电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 电子式三相预付费电能表项目可行性报告(2013年发改委评审通过案例范文)-专家免费咨询.pdf
- 2025年AI大模型技术在电力系统中的应用及发展趋势报告-香港中文大学(赵俊华).docx
- 2025年温室气体核查指南-企业可持续发展的绿色基石-ICAS英格尔认证.docx
- 数字员工助力财务管理数字化转型.docx
- DeepSeek完全实用手册(1.5版本).pdf.docx
- 2025年一季度中国消费者消费意愿调查报告-立信数据-202506.docx
- 突发环境污染事件应急管理培训.docx
- 金融-银行行业专题:中国机构配置手册(2025版)之流动性与货币政策篇-“超级央行”时代.docx
- 陈立桅-高比能长循环全固态电池关键材料.docx
- 投资策略专题:从“第四消费时代”看未来消费机遇.docx
- 华为产品战略规划全景训战.docx
最近下载
- 学堂在线e时代的教与学—慕课引发的混合式教学1-5周作业答案+考试答案.docx VIP
- pep人教版四年级英语下册期末考试卷(可打印).pdf VIP
- 2023年副高(临床药学)考试真题卷.pdf VIP
- 私人订制旅行行程安排及免责.doc VIP
- 沪教版四年级下册英语期末测试卷附参考答案.pdf VIP
- 中泰化学2024环境、社会及治理(ESG)报告.docx
- 标准图集-西南18J515_室内装修.pdf VIP
- 《数据分析基础与案例实战(基于Excel软件)(第2版)》全套教学课件.pptx
- 人教版三年级英语下册期末测试卷及答案【完美版】.pdf VIP
- 基于PLC的变频器多段速调速系统设计.doc VIP
文档评论(0)