通过数据手册创造属于自己的代码

2024-06-07 13:48

本文主要是介绍通过数据手册创造属于自己的代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发的过程中我们经常会碰到一些新的芯片,首先要做的就是拿到数据手册,弄懂它的功能,然后就是写代码去驱动这个芯片。到了写驱动代码这一环节,按照通常的习惯就是去网上先找一下有没有类似的可以参考的代码,然后从别的平台移植到自己的平台,再调试一段时间,基本上就通了(我是在读的学生,公司的开发流程还不懂)。

如果经常这样做,心里老是有种不舒服的感觉,我仔细想了一下,大概有这么一些东西。首先就是,无论这个芯片最后有没有调通,运行的怎么样,自己心里明白这是别人的代码。其次就是,如果移植的代码跑的很顺利,那么很自然而然的就不再理会其中的细节,数据手册也马上就抛到脑后,这种做法有个很大的弊端就是如果有一天代码出问题了,这时你对这个芯片的熟悉程序是远远不够的,以至于不能快速的找出问题并解决,还有就是从别人的代码中找到蛛丝马迹并顺藤摸瓜解决问题,我感觉是相当头疼的一件事。最后一点也是最重要的一点,俗话说不想当将军的士兵不是好士兵,既然踏进这个行业,就励志做一名牛逼的工程师,所以不能满足于抄抄别人的代码,做一些移植工作,因为你所移植的代码,究其原点,终究是有人通过数据手册一行一行写出来的。还有就是,如果你开发的东西是相当高精尖的领域,总有时候是你在网上找不到可参考的代码。那么问题来了,这个踏足高精尖领域的工程师,不就是我们的理想吗。最后再说一下,移植代码并不可耻,甚至说一些重复代码是在浪费时间和精力,但是我们必须具备的一项素质就是通过阅读数据手册,能非常熟练的写出它的驱动代码。

今天就拿一个非常简单的AD芯片,不参考任何别人的代码,手头能用的资料就是数据手册和原理图,写出它的驱动代码。我们的平台是stm32f407,AD芯片是ADS1118,裸机程序。假设硬件工程师已经做好了完整的硬件电路。

作为软件,我们最首先关心的是芯片各个引脚的描述,一下是数据手册中关于引脚的描述


这样一看我们就会发现,芯片对外的接口是非常常用的SPI接口,SPI的SCLK接SCLK,MOSI接DIN,MISO接DOUT。CS接普通IO口,VDD供电,有四路输入信号,AIN0-AIN4,通过描述可以发现,这四路可以接成单极性的四路输入,或者双极性的两路输入。看完这些我们基本明白了这些引脚的功能,大体明白了芯片如何与MCU连接(SPI和I2C接口是两种非常常用的接口,所以两种通信协议烂熟于心)。

这篇关于通过数据手册创造属于自己的代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039351

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库