首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-29 12:04
江南大学 Java
智慧用能低碳研究院 - Java - 实习一面
自我介绍JDK1.8 中 HashMap 为什么要引入红黑树Spring 自动装配原理IOC 和 AOP 的概念出现循环依赖的问题如何解决分布式判题系统中如何防止用户恶意代码提交的?分布式判题系统支持多语言是吗?如果要添加 go 语言要怎么操作?如何保持 mysql 和 redis 的数据一致性问题?项目中用到了 rabbitmq 的死信队列,具体是在什么时候触发死信队列的?项目是直接用 docker 容器跑的,还是通过 docker-compose 部署的?
查看11道真题和解析
点赞
评论
收藏
分享
01-28 17:23
阿里巴巴_icbu_研发工程师
从面试官角度聊聊,如何给候选人通过还是不通过
面试这事儿: 面试官在 1-2 小时里做一件事——把你还原成一张“人才画像”,然后和岗位需要的画像做匹配。你看到的是:我问你项目、问你方案、问你观点、问你为什么。 我脑子里做的是:你的能力边界在哪、强项是什么、短板是什么、风险点在哪、成长性如何——你来了以后能不能交付、能不能扛事、是否值得信任。这篇文章想讲清两件事(站在面试官视角):面试官到底在面什么:我们如何在 1-2 小时里,把你还原成一张“人才画像”(能力边界、擅长领域、风险点、成长性)。面试官怎么做判断:我们具体看哪些维度、怎么追问拿证据、最后怎么下“通过 / 不通过 / 人才库”的结论。一、你看不到但一定存在的东西:岗位画像很多候选...
我发现了面试通关密码
点赞
评论
收藏
分享
2025-12-17 12:53
西南交通大学 Java
华为来之不易的offer
最开始机考的时候有一道题感觉做的时候连测试用例都还有没通过,最后提交歪打正着通过了很多,最后顺利通过10月底线下面试也很坎坷,一面就面的很不好,手撕用的最暴力的解法,面试官喊优化也一直优化不出来,面试问的问题也是很偏计算机网络基础的问题,很多没回答上,但是最后竟然获得了二面机会二面的时候感觉运气特别好,手撕抽到了一个很简单的算法题(岛屿问题),面试问的也都是基础java八股,最后也是顺利进入三面,第二天感觉第一面不好都以为没机会了,竟然顺利通过后面十一月份没有等到保温电话,中旬还去询问接口人(部门领导),还被降温了,回复我:看破不说破。当时就觉得无了最后十一月底竟然收到了部门领导的保温电话,也是很快就收到了意向。12月初显线下签约完后部门领导聊天,他说我当时的面试成绩刚刚过及格线,而且是他第一个收到简历的,后面帮我推了一下进度(部门投递的人比较少),最后也很幸运有这个机会
李橙子:
这是歪打正着撞大运啊
点赞
评论
收藏
分享
02-02 11:59
已编辑
浙江大学 全栈开发
3.12 ReAct 框架
从 Yao 等人,2022 引入了一个框架,其中 LLMs 以交错的方式生成 推理轨迹 和 任务特定操作 。生成推理轨迹使模型能够诱导、跟踪和更新操作计划,甚至处理异常情况。操作步骤允许与外部源(如知识库或环境)进行交互并且收集信息。ReAct 框架允许 LLMs 与外部工具交互来获取额外信息,从而给出更可靠和实际的回应。结果表明,ReAct 可以在语言和决策任务上的表现要高于几个最先进水准要求的的基线。ReAct 还提高了 LLMs 的人类可解释性和可信度。总的来说,作者发现了将 ReAct 和链式思考 (CoT) 结合使用的最好方法是在推理过程同时使用内部知识和获取到的外部信息。它是如何运...
提示词工程指南
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
AI 应用开发学习全景路线图
1.4W
2
...
计算机专业如何找实习?(26届计算机找实习经验帖)
4923
3
...
百度Agent智能体研发日常实习一二面
4862
4
...
大厂到底想要什么样的人???
3985
5
...
害怕被嘲笑就不去做了吗?
3646
6
...
面试官视角聊聊,AI大模型产品到底是做什么的?
2743
7
...
2026的你,应该知道哪些AI面试题?
1481
8
...
纯前端网页拼图小游戏制作
1430
9
...
测试/测开方向刷题经验分享
1383
10
...
因为简历太烂被培训班找上了吗
1020
创作者周榜
更多
正在热议
更多
#
在大厂上班是一种什么样的体验
#
2811次浏览
40人参与
#
找工作的破防时刻
#
251125次浏览
1947人参与
#
程序员找工作至少要刷多少题?
#
6123次浏览
100人参与
#
论秋招对个人心气的改变
#
4269次浏览
76人参与
#
程序员能干到多少岁?
#
4443次浏览
71人参与
#
刚入职的你踩过哪些坑
#
2937次浏览
66人参与
#
为了减少AI幻觉,你注入过哪些设定?
#
1232次浏览
41人参与
#
一张图晒一下你的AI员工
#
2035次浏览
51人参与
#
牛客AI体验站
#
2218次浏览
66人参与
#
我现在比当时_,你想录用我吗
#
2876次浏览
46人参与
#
AI Coding的使用心得
#
1768次浏览
45人参与
#
关于春招/暑期实习,你想知道哪些信息?
#
2982次浏览
66人参与
#
晒晒你司的新年福利
#
2754次浏览
50人参与
#
实习,不懂就问
#
163742次浏览
1456人参与
#
软开人,秋招你打算投哪些公司呢
#
180221次浏览
1383人参与
#
帆软软件工作体验
#
12596次浏览
68人参与
#
牛客租房专区
#
146481次浏览
1462人参与
#
简历无回复,你会继续海投还是优化再投?
#
138785次浏览
875人参与
#
从哪些方向判断这个offer值不值得去?
#
51043次浏览
348人参与
#
暑假倒计时,你都干了些啥?
#
40276次浏览
214人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务