如何根据芯片手册时序图编写驱动程序

2023-11-04

如何根据芯片手册时序图编写驱动程序

 

对于电子开发者来说,刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。

本文根据一个简单的例子来阐述根据时序图来编写对应的程序过程。旨在讲解对于初学者应该怎么利用芯片的时序图编写符合要求的底层驱动程序(老鸟请跳过)。

 

下载芯片的Datasheet,(个人常用http://www.21icsearch.com/)如果芯片使用的是标准的I2C、SPI、UART、1-WIRE等协议,那么直接使用现成的程序代码就行,满足速度的情况下模拟的硬件的怎么都行,(能抓老鼠的都是好猫,管他什么颜色)。

 

如果芯片采用的读写数据协议并不是常用的通信协议,比如ADC0809这样子的,厂家会提供一个时序图,通常情况下,这时候我们会采用单片机的IO口模拟来对芯片进行控制。就是这样子的图啦

有了这个图我们就能够根据它来编写驱动程序。

 

其次,要清楚芯片与单片机的接线方式,千万不要小看这一步,接线错误导致程序没调出来是很难发现的。有时候线接错了还一个劲的改程序。话说这种蠢事情自己干了就行,千万不要说。

 

 

然后,读懂时序图,本例中TLV5619共有4个端口(不是4个引脚),TLV5619是一个2.7 V TO 5.5 V 12-BIT PARALLEL DIGITAL-TO-ANALOG CONVERTER WITH POWER DOWN(2.7V到5.5V 12位带关断功能的并行DAC)。

 

按照要求连接好线路之后,就要对单片机IO口进行初始化,配置端口的输入输出模式,有时候还会配置上拉下拉等等,不要搞错了,这些准备工作都做好了之后,就正式开始看时序图了。

 

时序图故名思意就是时间顺序图,简单点说就是按照时间顺序数据和控制信号按照要求变化就是了,这里提供本人看时序图的一种方法,自称“扫描法”,就是用一个竖直的轴从左往右扫描,扫到谁 谁就变。

本例中 我们看看初始状态,可以看出控制信号/WE、/CS、和/LDAC都是应该置‘1’,所以程序开始就应该确定端口的初始状态。所以程序开始就是/WE、/CS、和/LDAC置‘1’ 记为状态0 

接着就是/CS拉低开始时序图的第一步 程序中描述就是 CS_L;  记为状态1

类似的把每个状态的每一端口的变化都标出来 如图

随着时间顺序,依次完成状态0到状态9的转换

每个状态对应的代码如下图

最后,将代码整理一下做成函数。

整理出来的代码就是这样子啦

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据芯片手册时序图编写驱动程序 的相关文章

  • STM32F103 配置Systick

    Systick系统滴答时钟 Systick h ifndef SYSTICK H define SYSTICK H include 34 stm32f10x h 34 void SysTick Init void void Delay ms
  • STM32F103串口(ISP)下载

    1 ISP简介 ISP Iin System Programming 在系统可编程 xff0c 指电路板上的空白器件可以编程写入最终用户代码 xff0c 而不需要从电路板上取下器件 xff0c 已经编程的器件也可以用SP方式擦除或再编程 I
  • 花两天时间写的stm32f103串口BootLoader(有keil工程)

    因为在论坛和官网都没搜到完全合适的BootLoader xff0c 所以自己移植完成了一个BootLoader工程 另外附APP文件工程 xff0c 可做实验 用良心保证 xff0c 看完后可以做一个成功的实验 上位机选用SecureCrt
  • STM32F103 KEIL 标准库直接添加DSP库

    前言 近期由于比赛需要 xff0c 想要在STM32上移植DSP库进行FFT变换 xff0c 找了很多资料都是利用CUBEMX进行导入的方法 xff0c 本人使用的是标准库 xff0c 对HAL库并不熟悉 xff0c 所以考虑到移植的方便采
  • stm32f103——中断——UART中断服务函数

    在程序中 xff0c CPU对外界突发事件进行处理的方式又两种 xff1a 1 轮询系统 xff1a xff08 在main中 xff0c 使用while循环 xff0c 进行循环判断外界事物是否发生 xff09 while xff08 1
  • STM32F103 USART1串口重映射功能的实现

    STM32F103 USART1串口重映射实现方法代码 转载请注明出处 xff1a https blog csdn net qq 43400642 article details 84838405 我们知道 xff0c F103的usart
  • STM32F103最小系统板引脚定义

    STM32F103最小系统原理图 本人初学stm32 若有误解之处 还望大佬们指正改进 感谢 STM32F103各引脚定义 可前往 STM32F103xCDE 数据手册 英文 的第三章 Pinouts and pin description
  • STM32F103 移植FreeRTOS (附FreeRTOS源码和移植工程)

    文章目录 前言1 移植FreeRTOS2 测试FreeRTOS3 移植工程 前言 该篇环境为 xff1a STM32F103ZET6 Keil 库函数版本 F4 F7 H7移植同理 FreeRTOS源码 xff1a 链接 xff1a htt
  • STM32F103 CAN总线配置总结

    stm32的can总线的配置如下 xff1a CAN InitStructure CAN TTCM 61 DISABLE 禁止时间触发通信模式 CAN InitStructure CAN ABOM 61 DISABLE CAN InitSt
  • [STM32F1]关于STM32F103芯片按钮机制串口发送程序

    就是目前遇到一个项目 xff0c 是监视各个按钮状态并将各个按钮的状态发送至上位机 xff0c 上位机进行整体程序逻辑动作 一般情况下串口发送可以直接一直发送给上位机 xff0c 通过解析不同数据位0和1的状态可以知道具体哪个按钮按下 xf
  • STM32f103时钟树详解

    一 概述 stm32有四种时钟信号源 xff0c HSE 高速外部时钟 HSI xff08 高速内部时钟 xff09 LSE xff08 低速外部时钟 xff09 LSI xff08 低速内部时钟 xff09 HSE通常接8M晶振 xff0
  • IMX6ULL与STM32F103的CAN通信实现

    IMX6ULL与STM32F103的CAN通信实现 硬件连接驱动层实现IMX6ULLSTM32F103ZET6 应用层实现IMX6ULLSTM32F103ZET6 结果 在上一篇博文中 xff0c 我们利用USBCAN设备及其上位机软件 x
  • 拓展模块使用教程和心得(三):ULN2003模块与28BYJ48步进电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 关于ULN2003模块和对应的28BYJ48步进电机 xff0c 网上现有的资料与教程对于初学者有点不太友好 xff0c 造成的现象是仅仅只能让步进电机转起来 xff0c 但是没有对于控制转速和转角的实践分析 xff0c 本
  • RTX移植STM32F103,超详细~

    目录 RTX移植前言移植1 创建工程2 配置工程3 添加LED文件4 编写测试代码5 编译烧录 RTX移植 往期回顾 为什么需要RTOS 前言 keil RTX是一款应用广泛的嵌入式RTOS xff0c 具体可见官网 为什么需要RTOS x
  • stm32f103c8t6+dht11测量温湿度(单总线协议)

    核心问题 如何根据电路和时序来写程序 接口协议 单总线 意味着一根数据线实现接收和发送 所以相应的GPIO口要设置为2种模式 输入 输出 电路 如果没有在电路中作5k上拉 可以把GPIO模式设置成GPIO Mode IPU实现软件上拉的效果
  • STM32F103移植FreeRTOS必须搞明白的系列知识---3(堆栈)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • 入门stm32简单电灯实验

    看原理图找内置LED接线 stm32f103 我这边是接的 PE5 外设时钟使能寄存器的相关配置 因为LED1接的是PE5 所以GBIO端口E 查看中文手册获取GPIOE寄存器起始地址0x4001 1800 通过查看系统架构 可以发现GPI
  • STM32F103 UART4串口使用DMA接收不定长数据和DMA中断发送

    一 前言 使用DMA通信的好处是 不占用单片机资源 不像普通串口中断 发送一个字节触发一次中断 发送100个字节触发100次中断 接收一个字节触发一次中断 接收200个字节触发200次中断 数据接收完毕触发一次DMA中断 发送数据完毕触发一
  • 电子工程师的自我修养 - 整流桥

    基本介绍 利用二极管的单向导电性将正负变化的交流电压变为单向脉动电压的电路 在交流电源的作用下 整流二极管周期性地导通和截止 使负载得到脉动的直流电 工作原理 在整流桥的每个工作周期内 同一时间只有两个二极管进行工作 因此我们可以将整流器工
  • STM32定时器-基本定时器

    目录 定时器分类 基本定时器功能框图讲解 基本定时器功能 时钟源 计数器时钟 计数器 自动重装载寄存器 定时时间的计算 定时器初始化结构体详解 实验 定时器分类 STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器

随机推荐

  • 关于性能测试,测试人员必须要知道的

    随着各企业的业务发展 用户量以及数据量的不断增加 系统承载的压力也会随之增加 服务系统的性能好坏又严重影响企业的利益 因此 性能测试重要性与需求越来越强烈 常见的性能测试目的 性能测试是确定系统在特定工作负载下的稳定性和响应能力 在进行性能
  • RTSP和RTP、RTCP协议介绍

    一 RTSP 1 简介 RTSP Real Time Stream Protocol 协议是一个基于文本的多媒体播放控制协议 属于应用层 RTSP以客户端方式工作 对流媒体提供播放 暂停 后退 前进等操作 它主要用来控制具有实时特性的数据的
  • linux:nginx报错,提示host not found in upstream

    原因参考 解决 nginx 启动错误 nginx emerg host not found in upstream emerg host not found in upstream loaclhost
  • 代码随想录算法训练营第一天

    数组理论基础 文章链接 代码随想录 记忆 数组是存放在连续内存空间上的相同类型数据的集合 数组下标都是从0开始的 数组内存空间的地址是连续的 数组的元素是不能删的 只能覆盖 在C 中二维数组是连续分布的 像Java是没有指针的 同时也不对程
  • flutter打包的app有多大_前端大势所趋---Flutter 这篇文章会让你行动起来

    Flutter和原生APP的性能对比 前言 自从今年google IO大会推出flutter跨平台开发框架以来 flutter在各个技术论坛里被吵得如日中天 flutter团队直言flutter可以帮助开发者轻松实现恒定60fps的性能体验
  • Unity3d连接SQLServer数据库

    在编写代码之前需要 1 引入程序集System Data dll 位置在C Program Files Unity Editor Data Mono lib mono unity 我unity默认装在C盘 2 把System Data dl
  • 两个app应用之间的跳转

    一 应用跳转的原理 从一个应用跳转到另一个应用 作为APP开发者 最熟悉的莫过于第三方登录 支付宝 微信支付时 那时候我们可能仅仅按照集成文档一步一步操作 在文档中配置很多类似URL Schemes 如下图 一般的配置 下面我们进入正题的为
  • LCM接口汇总

    LCM接口汇总 如下均是网上找的资料 1 RGB TTL RGB电平信号 TTL接口 数据传输速率不高 传输距离较短 且抗电磁干扰 EMI 能力也比较差 会对RGB数据造成一定的影响 另外 TTL多路数据信号采用排线的方式来传送 整个排线数
  • Hook (钩子) 线程学习总结

    当 JVM 进程退出的时候 或者受到了系统的中断信号 hook线程就会自动执行 通过 Runtime 可以为 JVM 注入多个 Hook 线程 然后看个简单的例子 import java util concurrent TimeUnit a
  • SQL语句查询1:如何从查询结果json格式数据中提取某个字段的值

    很多情况下 数据库表字段内容会以json格式来存数据 如下图 那么在我们需要查询上图中的content字段里面的某个字段的值时 需要怎么处理呢 方法一 字符串截取的方式 利用SQL中的SUBSTR 字段名 m n 函数来进行截取 selec
  • vue项目使用高德地图

    vue项目使用高德地图 部分功能介绍 在此做个笔记 引入方式使用了高德2 0 loadsh的加载方式 1 引入高德地图方式 NPM npm i amap amap jsapi loader save 在页面引入 import AMapLoa
  • java循环操作分页查询

    public void pageQuery List
  • tomcat服务器输入localhost可以访问,ip无法访问解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最近在开发项目中 遇到的一个问题是 在 tomcat中发布一个web项目 但是发布成功后 只能用http localhost 8080 fm访问项目 不能用 http 12
  • 【模电】0008 有源滤波器3(二阶有源高通、带通、带阻滤波器)

    上一节我们分析了二阶有源低通滤波器 这一节我们来继续 分析其他种类的二阶滤波器 包括高通 带通 带阻滤波器 由于分析过程是类似的 都是以节点列方程 化简后得到传递函数 本篇就不具体写计算过程了 直接给出仿真图和传递函数的结果 1 二阶有源高
  • 怎么把竖线去掉_怎么去掉word竖线

    一 word中文字左边出现竖线 不可以删除怎么解决 1 本次演示操作的Office办公软件为Excel 2013版本 2 首先新建一个Word文档 输入用于演示的文本数据 在以下的文本中我们可以看到文字左边有竖线 下面我们来操作删除这条竖线
  • 【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

    文章目录 需求 解决方案 什么是Redis GeoHash 1 Java Redis实现 引用的pom依赖 InitEquLongLatTask java Controller Service dao xml sql语句 2 Java 数据
  • 推特公司员工大规模辞职,挺有勇气的

    近日 一则推特公司员工大规模辞职登上热搜 推特CEO马斯克 此前说目前推特正在为赢得激烈竞争而砥砺前行 所以需要所有员工接受 高强度 长时间 努力工作 邮件里附了一个同意选项框 可以选 是 或 否 选择了 是 的员工 可以留下 选了 否 的
  • 分支结构 --> if else分支结构

    if else分支结构 if 条件表达式 语句块1 else 语句块2 判断条件表达式是否成立 gt 若成立 则执行语句块1 gt 若不成立 则执行语句块2 package demo 编程使用if else分支结构来模拟考试成绩查询的过程
  • 关于DOTS的个人总结

    网上已经有比较多的DOTS的资料了 这里就简单介绍一下 DOTS Data Oriented Technology Stack 数据导向型技术栈 的缩写 是Unity退出的面向多线程编程的解决方案 其包含了 C Job System Ent
  • 如何根据芯片手册时序图编写驱动程序

    如何根据芯片手册时序图编写驱动程序 对于电子开发者来说 刚刚拿到一个芯片 常用的芯片可以参考网上的例程来做深入了解 对于一个不常用的芯片来说 Datasheet几乎是使用芯片的唯一的资料 所以根据Datasheet时序图写出对应的驱动程序就