首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-16 08:57
广西大学 算法工程师
美团 AI应用开发 二面
1. 你现在做的系统如果让我一句话理解,它解决的核心问题是什么2. 如果让你重新设计这套系统,你会先拆哪几个边界,而不是先画微服务图先拆交易主链路和旁路能力。主链路只保留强约束动作,比如下单、库存冻结、支付确认、履约状态推进;旁路能力像风控、推荐、画像、报表、运营分析都要尽量异步化。再往下拆数据边界,订单事实、库存事实、支付事实不能混成一张万能表。最后才是服务边界,因为很多系统不是服务没拆好,而是业务一致性边界一开始就画错了。3. 一套交易系统里,什么地方最容易被误判成“性能问题”,其实是模型设计问题最典型的是状态字段过载。很多系统把几十种业务状态塞进一个 status,然后所有查询、补偿、回...
AI-Agent面试实战...
点赞
评论
收藏
分享
04-13 21:22
已编辑
门头沟学院 Java
27届-暑期实习-阿里股集团-平台技术-一面凉经
🕐面试时间:26.4.13-45分钟-电话面试💻面试岗位:AI应用开发❓面试问题:1、自我介绍2、选熟悉的项目来完整介绍一下?3、这个课题组项目是几个人做的?4、现在主流Agent里面好像替换掉了RAG这一部分有了解过吗?5、AIcoding的过程中有遇到一些什么问题吗?或者说有没有一些心得?怎么去用AIcoding呢?6、AIcoding的话,平常使用哪些来写代码?7、介绍下React范式,然后Agent如何去判断何时调用知识库、MCP Server、API呢?8、React范式的话有什么缺点呢?9、介绍下文档异步处理的整个流程?10、为什么使用Kafka而不是使用Spring的Even...
查看14道真题和解析
点赞
评论
收藏
分享
03-15 10:59
已编辑
字节跳动_后端开发(实习员工)
致自己🙇
给时间时间 终会梦想成真的🥺那就努力努力再努力🤲
爱写代码的菜code...:
哎,自己当时拿到字节offer的时候也在感叹终于拿到了,自己当时最想去的企业就是字节,结果还是阴差阳错去了鹅厂。祝uu一切顺利!!!
点赞
评论
收藏
分享
03-20 20:48
字节跳动_测开(实习员工)
六面字节终oc 我的暑期结束了
timeline过年前就约的年后三月份的面试2026 3.05 一面2026 3.10 二面(挂)2026 3.13 二面2026 3.16 hr面2026 3.19 口头oc2026 3.20 offer两道手撕无重复字符最长子串数组中能组成小于n的最大数字记录一下 不多写什么了 同时也感谢平台上以前发面经的佬们记录的一些手撕题目 刷一刷颇有成长
在人才库的椰子很可爱:
看来字节很喜欢出 无重复字符最长子串,我前几天社招一面也是这题
我的OC时间线
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
没个“能打”的项目,简历关都过不去
6.1W
2
...
建发 vs 象屿 vs 工行厦门 vs 厦门银行
5.5W
3
...
刷了3段实习,我发现90%的“金融科技项目”都是假的
8937
4
...
学院二本圆梦字节,提前结束暑期啦
6881
5
...
恒生电子春招
4883
6
...
多益网络三面
4844
7
...
虾皮五面(提前挂)
4325
8
...
整组的实习生全被干掉了...
3840
9
...
字节27agent开发实习一面凉经分享
3618
10
...
滴滴java一面
3480
创作者周榜
更多
正在热议
更多
#
我的求职进度条
#
1234689次浏览
9131人参与
#
第一份工作应该选择高薪还是大平台
#
220781次浏览
1042人参与
#
华泰星战营,提前锁定校招offer
#
4731次浏览
282人参与
#
你简历上最心虚的一句话
#
2142次浏览
19人参与
#
考公VS就业,你怎么选?
#
100015次浏览
523人参与
#
哪些公司对双非友好
#
230105次浏览
1236人参与
#
卷__卷不过你们,只能卷__了
#
59961次浏览
756人参与
#
校招第一份工作你干了多久?
#
150223次浏览
631人参与
#
商战,最累的是我们
#
31692次浏览
99人参与
#
小红书求职进展汇总
#
238527次浏览
1397人参与
#
找工作的破防时刻
#
289616次浏览
2065人参与
#
面试线索爆料
#
127275次浏览
699人参与
#
春节前,你还在投简历吗?
#
43087次浏览
351人参与
#
大疆求职进展汇总
#
699869次浏览
4351人参与
#
字节7000实习来了,你投了吗?
#
44325次浏览
349人参与
#
AI时代还有必要刷leetcode吗?
#
50798次浏览
589人参与
#
工作中,努力重要还是选择重要?
#
286072次浏览
2587人参与
#
机械求职避坑tips
#
100378次浏览
580人参与
#
为了实习逃课值吗?
#
79617次浏览
572人参与
#
国企/银行/研究所公司爆料
#
209314次浏览
920人参与
#
格力求职进展汇总
#
213535次浏览
1276人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务