基于STM32的ADS1230驱动例程

自己在练手项目中用到了ADS1230,根据芯片手册自写的驱动代码,已测可用,希望对将要用到ADS1230芯片的人有所帮助。

芯片:STM32系列任意芯片、ADS1230

环境:使用STM32CubeMX配置引脚、KEIL

部分电路:

代码:

ads1230.h

#ifndef __ADS1230_H__
#define __ADS1230_H__#include "gpio.h"// 移植时改为对应引脚即可
// 控制AD开关 (PDWN引脚)              
#define AD_ON()                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET)               
#define AD_OFF()                HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET)// 控制数据传输速率(SPEED引脚)
#define AD_SPEED_H()			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET)
#define AD_SPEED_L()			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET)// 控制时钟信号(SCLK引脚)
#define ADS1_CLK_H()             HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET)
#define ADS1_CLK_L()             HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET)// 读一位数据(DOUT引脚)
#define ADS1_RD_DATA             HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)// 获取当前mv值
void readADS1230(double* signal_mv); #endif

 ads1230.c

#include "ads1230.h"
#include "main.h"
void readADS1230(double* signal_mv)
{int ADdatatemp1=0;                      uint8_t mv1_flag = 0 ;     // 用来判断正负的标志位while(ADS1_RD_DATA);       // 等待数据准备好for(uint8_t i = 0;i < 20;i ++)    // 读取20位数据        {ADdatatemp1 = ADdatatemp1 << 1;ADS1_CLK_H();          // 发送一个时钟信号ADS1_CLK_L();	if( i == 0 )           // 读第一位数据,判断正负{if(ADS1_RD_DATA)                     {ADdatatemp1 ++;mv1_flag++;}ADdatatemp1 = ADdatatemp1 << 11;}else{if(mv1_flag){if(!ADS1_RD_DATA)                    {ADdatatemp1 ++;}}else{if(ADS1_RD_DATA)                    {ADdatatemp1 ++;}}	}}    if(!mv1_flag)ADdatatemp1++;    // 负数最后要加1for(uint8_t i=0;i<6;i++)       // 额外发送6个时钟信号用来校准{ADS1_CLK_H();ADS1_CLK_L();}*signal_mv =( 19.53125f / 524287.0f )*ADdatatemp1;    // 计算mv值return;
}

使用方法:

// 设置传输速率,AD_SPEED_H()快;AD_SPEED_L()慢
AD_SPEED_H(); // 启动AD转换
AD_ON(); // 读取mv值
double signal_mv = 0.00f;
while(1)
{readADS1230(&signal_mv);// printf("-- 当前mv值 %.4f --\n",signal_mv);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎学习第98天

仓库:https://gitee.com/mrxiao_com/2d_game_2 开始进行一点回顾 今天的目标是继续实现正常贴图的操作&#xff0c;尽管目前我们还没有足够的光照信息来使其完全有用。昨日完成了正常贴图相关的基础工作&#xff0c;接下来将集中精力实现正常贴图的基本操作&#xff0c;并准备…

Windows 本地部署大模型 OpenWebUI+Ollama

安装Ollama Ollama官方网址&#xff1a;https://ollama.com 下载运行大模型 在Ollama官网中查看需要下载的大模型 https://ollama.com/library 复制图片中的链接 打开cmd&#xff0c;运行此命令&#xff08;此过程会时间会很久&#xff09; 下载Miniconda Miniconda作用是…

C# 数据验证Regex

Regular Expression&#xff0c;简称 Regex,是一种用于匹配和处理文本的强大工具。它通过定义特定的模式&#xff0c;可以用来搜索、替换或提取字符串中的特定内容。 先引入命名空间 using System.Text.RegularExpressions; Intege(整数) 必须是正整数 //必须是正整数publi…

npm运行Vue项目报错 error:0308010c:digital envelope routines::unsupported

大家好&#xff0c;我是 程序员码递夫。 问题 VSCode 运行Vue项目&#xff0c;提示错误&#xff1a; building 2/2 modules 0 activeError: error:0308010c:digital envelope routines::unsupported 解决方法 原因是 npm 高版本(大于17)&#xff0c;对ssl的处理做了改进&…

DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力

引言&#xff1a;低成本高性能的AI新范式 在2025年1月&#xff0c;中国AI公司DeepSeek发布了两个标志性模型——DeepSeek-R1-Zero与DeepSeek-R1&#xff0c;以仅600万美元的训练成本实现了与OpenAI O1系列&#xff08;开发成本约5亿美元&#xff09;相当的推理性能&#xff0c…

【知识科普】CPU,GPN,NPU知识普及

CPU,GPU,NPU CPU、GPU、NPU 详解1. CPU&#xff08;中央处理器&#xff09;2. GPU&#xff08;图形处理器&#xff09;3. NPU&#xff08;神经网络处理器&#xff09; **三者的核心区别****协同工作示例****总结** CPU、GPU、NPU 详解 1. CPU&#xff08;中央处理器&#xff0…

安川伺服控制器MP系列优势特点及行业应用

在工业自动化领域&#xff0c;运动控制器的性能直接决定了设备的精度、效率和可靠性。作为全球领先的运动控制品牌&#xff0c;安川电机伺服控制器凭借其卓越的技术优势和广泛的应用场景&#xff0c;正在为智能制造注入强劲动力&#xff01; MP3100&#xff1a;主板型运动控制…

深入探索现代CSS:从基础到未来趋势

引言&#xff1a;CSS的进化之路 CSS&#xff08;层叠样式表&#xff09;自1996年诞生以来&#xff0c;已从简单的样式描述语言发展为构建现代Web体验的核心技术。截至2023年&#xff0c;超过98%的网站使用CSS3技术&#xff0c;其发展历程见证了Web从静态文档到富交互应用的蜕变…

Python----PyQt开发(PyQt高级:图像显示,定时器,进度条)

一、图像显示 1.1、增加图标 1.直接创建setWindowIcon(QIcon(灯泡.jpg)) import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from PyQt5.QtGui import QIconclass MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init_…

工业路由器物联网应用,智慧环保环境数据监测

在智慧环保环境数据监测中工业路由器能连接各类分散的传感器&#xff0c;实现多源环境数据集中采集&#xff0c;并通过多种通信网络稳定传输至数据中心或云平台。 工作人员借助工业路由器可远程监控设备状态与环境数据&#xff0c;还能远程配置传感器参数。远程控制设置数据阈…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

JAVA并发编程3--多线程程序

​ 1.创建线程的方法&#xff1a; 案例&#xff1a;计算1-1000的整数和 实现Runnable接口 步骤&#xff1a; 1.创建一个实现了Runnable接口的类 2.实现类去实现Runnable中的抽象方法&#xff1a;run() 3.创建实现类的对象 4.将此对象作为参数传递到Thread类的构造器中&#…

django中间件,中间件给下面传值

1、新建middleware.py文件 # myapp/middleware.py import time from django.http import HttpRequest import json from django.http import JsonResponse import urllib.parse class RequestTimeMiddleware:def __init__(self, get_response):self.get_response get_respons…

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT&#xff1f; 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头&#xff08;Classification Head&#xff09; 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…

深入浅出:探索 DeepSeek 的强大功能与应用

深入浅出&#xff1a;探索 DeepSeek 的强大功能与应用 在人工智能技术飞速发展的今天&#xff0c;自然语言处理&#xff08;NLP&#xff09;作为其重要分支&#xff0c;正逐渐渗透到我们生活的方方面面。DeepSeek 作为一款功能强大的 NLP 工具&#xff0c;凭借其易用性和高效性…

为AI聊天工具添加一个知识系统 之97 详细设计之38 Token 之3 前端开发

本文要点 要点 本项目&#xff08;为使用各种聊天工具的聊天者 加挂一个知识系统&#xff09;前端 的用户界面上 主要 有 知识图谱、认知地图和语义网络&#xff0c;和 聊天工具的chat嵌入 同时还必须有知识树 成熟的果实&#xff08;对外的网页 ) 以及 组建和参与利益相关组…

轮子项目--消息队列的实现(3)

上一篇文章中我把一些关键的类以及表示出来&#xff0c;如何对这些类对应的对象进行管理呢&#xff1f;管理分为硬盘和内存上&#xff0c;硬盘又分为数据库&#xff08;管理交换机&#xff0c;队列和绑定&#xff09;和文件&#xff08;管理消息&#xff09;&#xff0c;本文就…

Svelte前端框架

Svelte 简介 Svelte 是一个现代的前端框架&#xff0c;用于构建高效、响应式的用户界面。与 React、Vue 和 Angular 等传统框架不同&#xff0c;Svelte 在构建时将组件编译为高效的纯 JavaScript 代码&#xff0c;而不是在浏览器中运行一个庞大的运行时库。这使得 Svelte 应用具…

【转载】开源鸿蒙OpenHarmony社区运营报告(2025年1月)

●截至2025年1月31日&#xff0c;开放原子开源鸿蒙&#xff08;OpenAtom OpenHarmony&#xff0c;简称“开源鸿蒙”或“OpenHarmony”&#xff09;社区累计超过8200名贡献者&#xff0c;共63家成员单位&#xff0c;产生51.2万多个PR、2.9万多个Star、10.5万多个Fork、68个SIG。…

@SneakyThrows:是Java异常处理的“魔法外挂“,还是隐藏的“定时炸弹“?

引言&#xff1a;当Java的异常机制成为"甜蜜的负担" Java的检查型异常&#xff08;Checked Exception&#xff09;设计本意是提升代码健壮性&#xff0c;但开发者常常陷入两难&#xff1a; 要么用try-catch层层包裹代码导致"金字塔噩梦"&#xff0c;要么在…