- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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;
您可能关注的文档
- unit1教案表格课后.doc
- I-PE005量规仪器校正与管理程序课后.doc
- SchoolSubject集体备课卡课后.doc
- 出口商品运输包装瓦楞纸箱检验规程课后.doc
- JavaScript中最常用的55个技巧课后.doc
- 成品检验标准课后.doc
- instructionplanforunit5book2课后.doc
- 成品检验规范课后.doc
- SQLserver字符串分割自定义函数课后.doc
- EDA实验报告(绝对有用)课后.doc
- 深度解析(2026)《ISO 22002-12025食品安全前提方案—第1部分:食品制造》.pptx
- 深度解析(2026)《ISO 22002-52025食品安全前提方案—第5部分:运输和储存》.pptx
- 深度解析(2026)《ISO 22002-42025 食品安全前提方案 — 第4部分:食品包装制造》.pptx
- 徒步活动策划方案.doc
- 深度解析(2026)《ISO 22002-62025食品安全前提方案—第6部分:饲料及动物食品生产》.pptx
- 2026年新版郯城期末真题卷.doc
- 深度解析(2026)《ISO 22476-72012岩土工程勘察与测试 — 现场测试 — 第7部分:钻孔千斤顶试验》.pptx
- 深度解析(2026)《ISO 22090-22014 船舶与海洋技术 — 航向传送装置(THD) — 第2部分:地磁原理》.pptx
- 深度解析(2026)《ISO 23584-22012 光学和光子学 — 参考字典规范 — 第 2 部分:类与特性定义》:构建智能制造数据基石的专家视角与未来展望.pptx
- 深度解析(2026)《ISO 22932-92025 Mining — Vocabulary — Part 9 Drainage》:构建未来矿山“水脉”治理与可持续发展的新语言体系.pptx
原创力文档


文档评论(0)