首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
已注销
发布于江西
关注
已关注
取消关注
mark
@嵌入式的小白:
分享下我工作后写的第一个驱动的经历,spi同eeprom通信
我大学学的硬件,但其实对这个兴趣不大,而且刚工作后,发现硬件貌似不适合我,就慢慢转嵌入式了,当时只有个C语言的基本,然后自学了STM32的一些东西,就大胆的去换工作,换到嵌入式软件了,换的还是比较顺利,当时还是很容易的找到个初级工程师的岗位,入职后,就要让我开始干活了。我那个项目用的是ATMEL的MCU,要和一个eeprom通过,eeprom存储了一些信息,我需要做的是编写好一个读eeprom和写eepro的接口,供别的同事调用,也就是咋们通常说的驱动,提供驱动EEPROM的接口,里面存啥数据我就不用关心的,当时硬件设计上MCU和eeprom之间的通信方式是spi接口(有的eeprom是采用iic的方式通信,具体器件具体对待啊)。1.因为软件上需要对spi引脚进行初始化,所有我先从硬件提供的原理图中找到spi对应的引脚信息,看了图,在结合mcu的手册,我知道了使用的引脚和使用的是那一组spi2.开始写代码,我已经有对应的引脚信息了,就开始进行引脚,时钟和spi的初始化,并配置了spi写操作对应的DMA和spi对操作对应的DMA引脚主要就是把默认的gpio配置成spi功能,除了这个之外,还有控制eeprom的其他管教,其中包括电源(MCU有一个电源使能引脚来对eeprom进行上电和掉电的操作),控制引脚HOLD(通过该引脚来暂停对设备的访问,这个时候除了片选脚,所有输入脚上的传输都会被忽略),该项目上因为spi上只接了一个设备eeprom,所有cs引脚默认生效,所以不用管这个脚了。spi初始化主要配置了工作模式(spi有4种工作模式),市场上的spi设备,一般都会支持两种模式,我们在配置时,配置成支持的模式即可。3.操作说明我当时用的那款eeprom内部有一个8bit的指令寄存器,这个是通过eeprom手册中查看到的,写驱动那肯定是先看手册啦,通过手册知道怎么控制对应的器件,才能写代码哦,从eeprom手册中,我还得知和eeprom通信时,CS脚必须拉低并且HOLD脚必须拉高。当然还有操作指令,这个指令时啥意思呢?就是说每一次操作前,我先给eeprom发送指令和要操作的eeprom对应的地址,eeprom就知道我接下来要干啥了,废话不多说,直接先看怎么读的吧4.spi读操作操作时,需要先上电,并拉低CS引脚(CS引脚操作可忽略,因为当时项目上一直为低),然后发送读指令,紧接着发送地址,之后对应地址上的数据就会通过MISO引脚返回给MCU了,MCU就获取到了这个地址上的数据,如果我还需要下一个地址的数据,那就让spi继续工作,eeprom收到sck信号后,就把下一个地址的数据继续通过MISO引脚发出来了。如下图就是读操作的时许图,图中我特别用红色框标准了3个重要的地址,第一个instruction就是发送的读指令,第二个红色框就是发送的需要操作的eeprom对应的地址,第三个红色框就是eeprom给返回来的数据,这个图里面就读了一个数据,读了一个数据后,CS引脚就拉高了。5.spi写操作在写之前,需要我先一下写使能,好多eeprom在写操作前,必须发送WREN指令设置写使能锁存位。然后才能进行写操作。写操作和读操作有点相似,都是先发送指令,然后发送对应的地址,然后后面跟着数据。这个时序图和上面写操作相似,但注意上面两幅图全部都是从从设备的角度考虑的,图中的SI和SO两个信号中的S指的就是slave的意思,所以在写操作时,写入的数据是从MCU发出给EEPROM的,所以SI信号线上应该有待写入EEPROM的数据Data Byte,对于读操作,数据是从EEPROM到MCU的,所以数据Data out是在SO信号线上的。6.地址扩展说明从上面读写操作的时序图中可以看出,每个图中的第2个红色方框中的地址是16bit的,但这个在不同的从设备中会有差异,有的芯片从设备是固定的16bit,有的是8bit,有的是16bit,对于16bit或者24bit的情况下,看注意看对应从设备手册,看发从地址时,是先发送高位还是先发送低位。7.压力测试这个是我个人习惯,通常情况下,都会进行压力测试,对于EEPROM来说,我做的压力测试,就是来回的读写比对,来查看代码的健壮性。8.写使能刚才在写操作部分,简单说了下写使能,实际上,这个写使能就相当于上锁了,这个锁是在写之前要设置,且在任何写操作内部执行完成前,该锁存位都必须置上,且写使能指令发送后,CS需要拉高,然后再进行写操作,要是不拉高就开始写操作,那么数据因写使能没有正确设置导致写的数据没有写入eeprom中。写指令时许图如下。上电默认情况下,是会复位写使能锁存位的,且我用的这款EEPROM,是在字节写,页写或者写状态寄存器之后,写使能锁存位都会复位,这也是一种写保护的措施吧,就是为了防止一些误操作。有写使能,就也有与之对应的反操作,称为写失能,其时序图如下9.经验分享有些SPI通信中,因为从设置就一个,有时候就不关心CS,比如就有些情况下一直拉低CS,这种从理论上说没问题,但假如有异常操作,cs又是拉低的,就相当于MCU和eeprom操作了,就算异常操作,但未必就能对的上上面说的写指令,或者读指令等其他指令,不过我个人习惯会在不用的时候拉高cs
点赞 9
评论 3
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-17 14:59
小红书_后端开发_REDstar算法工程师(准入职员工)
小红书内推,小红书内推码
小红书推荐算法面经一面(60min)1、自我介绍(5分钟)2、项目和一些八股(40分钟)- 模型label是什么- 这一结构为什么会有效果提升,分析- embedding怎么得到的- 简单介绍一下sim3、手撕代码(10分钟)- 最大子数组和4、反问二面(40min)1、自我介绍(5分钟)2、项目(20分钟)- 为什么模型有效果- 召回粗排和精排要解决什么问题,选一个最熟悉的讲一下未来的迭代方向- 怎么保证链路一致性3、手撕代码(10分钟)- 给链表的头结点,将其按照升序排列并返回排序后的链表4、反问虽然两次面试前几个小时,面试官都因为临时开会更改了面试时间,让人有点不舒服,但是面试官人真的都...
点赞
评论
收藏
分享
10-21 09:35
厦门大学 驱动开发
狗都不干单休, 真的不要选单休的工作!
前言除非是真的没办法,或者是工资真的非常非常高,我劝各位真的不要选单休的工作。我毕业第一份工作就是单休的,当时因为转行,再加上疫情工作确实不好找,没办法就选了个单休的公司。单休工作的感受大体如下:单休等于没休,一到周末就不想出去,休息那一天睡个懒觉,起床就到中午了,有精力下午就出去逛一逛。因为第二天又要上班,晚上基本得早点休息,一天就这样子过去了。刚毕业的时候精力好,还能折腾,过了3-4个月就真心不想出门了。而双休,甚至是大小周,起码有个两天的周末你可以兼顾游玩和休息。单休跟双休,或者是大小周对比,一个月分别少休4天、2天;一年下来就是48天,24天;两年就是96天,48天……单休是干6天休一...
点赞
评论
收藏
分享
09-28 23:07
襄阳职业技术学院 网络安全
大概懂事长也有烦恼吧!!!
我以为我只有我找不到工作,没想到董事长也招不到人
站队站对牛:
你别不懂事
秋招感动瞬间
点赞
评论
收藏
分享
08-28 20:56
南京邮电大学 Java
入职第一个月最新发明
写完愣了两分钟开始笑
RajahnRan:
公司赚到了,这可是一眼就手写出来的代码,ai都写不出来
点赞
评论
收藏
分享
10-21 12:56
已编辑
百度_高级研发工程师
论实习生的自我修养(科幻篇)
我觉得mentor喜欢那种应届生但是三年工作经验、日薪5.3766 × 10¹²Z$但是全栈精通、按时下班但是主动加班、小团队挤兑但是一声不吭、懂得人情世故能够get领导的全部意思、不光能被PUA还能自己PUA自己的实习生。我觉得mentor喜欢那种刻苦勤奋艰苦奋斗克己奉公鞠躬尽瘁死而后已、每天提前一天到工位梳理今日待办事项、接到任务时总能多问一句背景目标和预期标准、提交代码前会自觉跑通全部测试用例、自己能写代码注释但是不要求别人写注释的实习生。我觉得mentor喜欢那种被指出错误时先认错再复盘最后带着改进方案二次汇报、分享零食不忘给隔壁组同事也带一份、周报里清晰标注阻塞风险却从不抱怨只列解决...
叁六玖:
不行了,这个图看一次笑一次
你觉得mentor喜欢什...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
这个实习生我要给他转正
1.3W
2
...
「潜力作者交流2群」开放报名啦!
7860
3
...
求职低谷期我是怎么度过的
6268
4
...
双非鼠鼠的秋招精神状态
5323
5
...
27四非本,字节后端实习OC
4941
6
...
以Mentor视角,说说我最喜欢什么样的实习生
3641
7
...
没有家庭的托举,我只能靠自己
3512
8
...
如何做好汇报:让努力被看见、让成果更有价值
3236
9
...
学长,我得休息了,明天要面软*动力
3134
10
...
卓望秋招一面
2572
创作者周榜
更多
正在热议
更多
#
你的mentor是什么样的人?
#
7558次浏览
64人参与
#
投递几十家公司,到现在0offer,大家都一样吗
#
266511次浏览
1859人参与
#
未岚大陆求职进展汇总
#
38544次浏览
117人参与
#
怎么给家人解释你的工作?
#
3923次浏览
41人参与
#
26届秋招公司红黑榜
#
18736次浏览
65人参与
#
帮我看看,领导说这话什么意思?
#
9560次浏览
49人参与
#
平安产险科技校招
#
2515次浏览
0人参与
#
你觉得面试是靠实力还是靠运气
#
23539次浏览
279人参与
#
校招泡的最久的公司是哪家?
#
7263次浏览
43人参与
#
牛客树洞,我想对你说
#
2400次浏览
49人参与
#
求职低谷期你是怎么度过的
#
7416次浏览
144人参与
#
实习必须要去大厂吗?
#
148115次浏览
1550人参与
#
度小满求职进展汇总
#
11030次浏览
58人参与
#
你觉得mentor喜欢什么样的实习生
#
13213次浏览
347人参与
#
你觉得多少薪资算SSP?
#
113013次浏览
416人参与
#
没有家庭托举的我是怎么找工作的
#
15518次浏览
188人参与
#
你遇到过哪些神仙同事
#
117486次浏览
750人参与
#
同bg的你秋招战况如何?
#
159094次浏览
927人参与
#
从哪些方向判断这个offer值不值得去?
#
8361次浏览
104人参与
#
职场新人体验
#
101051次浏览
666人参与
#
职场破防瞬间
#
343548次浏览
2819人参与
#
面试紧张时你会有什么表现?
#
2230次浏览
23人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务