STM32 调试TM7711驱动原理图驱动代码

news2024/11/24 6:54:01

本文使用工程代码如下

(1条消息) STM32调试TM7711驱动原理图驱动源代码,参考如下博客,有原理图设计资源-CSDN文库

背景

项目选用TM7711,还是很令人吃惊的,主要是有如下几个理由

第一就是便宜

第二精度高

STM32的ADC精度不够,才12bit,TM7711的精度可以,可以提供单通道 24bit 高精度 ADC。

项目主要是使用TM7711测量热电偶的温度,温度范围要求比较大-99-999读,这里就对ADC的精度要求比较高。

本文不详细探讨热电偶的温度计算过程,只是将TM7711数据读取过程展现出来。热电偶的计算过程比较复杂,有时间需要静下心来好好写这方便的文章。

硬件设计

TM7711的基本资料

特性描述
TM7711 是应用于电子秤低频测量的单通道模拟前端。 该器件可以接受直接来自传感器的低电平的输入信号,然后产生串行的数字输出。利用 Σ-Δ 转换技术实现了 24 位无丢失代码性能。通过选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。片内数字滤波器处理调制器的输出信号,通过通信口发命令可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。
TM7711 只需 2.6~5.5V 单电源供电。TM7711 是全差分模拟输入,带有一个基准输入。
TM7711 是一款用于高精度电子秤系统的理想产品,由于采用特殊的结构确保器件具有极低功耗,
并且内建有掉电模式以减少待机功耗。该芯片还具有集成度高、响应速度快、抗干扰强等优点,可以大大降低电子秤系统的整机成本,提高整机系统的性能和可靠性。

功能特点
 1 对全差分输入通道的 ADC
 片内直接温度测量和数字输出
 24 位无丢失代码
 片内低噪声放大器,增益为 128
 ±0.001%非线性
 可选 10Hz 和 40Hz 的输出数据速率
 同步抑制 50Hz 和 60Hz 的电源干扰
 内置时钟振荡器无需任何外接器件
 简单的二线串行通信口
 工作电压范围:2.6 ~ 5.5V
 工作温度范围:-40 ~ +85℃
 封装形式:SOP8 /DIP8

典型应用

 管脚电压

串口通信时序

这里只是针对使用到的信息,做一些切割,如果想看详细的数据手册,还是下载一份TM7711的datasheet

原理图设计如下

主要注意的就是TM7711是使用STM32的管脚PB6/PB7

因为STM32是3.3v,TM7711的设计使用了推荐电压5v,所以接口部分需要进行做电平转换。如下图所示

图1处为STM32的管脚PB6/PB7

图2处为TM7711的管脚

 

 软件设计

原始数据读取驱动

根据上述原理图实现的驱动

这里说明一下,就是TM7711手册中也提供了一个函数,实际使用还是需要修改的

我这里的读取原始数据函数如下


int Read_TM7711(unsigned char next_select)
{
	unsigned char i = 0;
	unsigned int data_temp = 0;
	int ret;
	for(i = 0;i < 24;i++)
	{
		SET_SCK_H(); //
		data_temp <<= 1;
		delay_us(5); //延时5微妙
		//if(READ_PORT & (1 << PIN_DOUT)) //判断DOUT是否为高电平
		if(TM711_DO != 0)
			data_temp |= 1;
		SET_SCK_L();//
	}
	switch(next_select) //确定下一次数据更新率或者切换通道
	{
		case CH1_10HZ:
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
		break;
		case CH1_40HZ:
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
			delay_1us();
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
			delay_1us();
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
		break;
		case CH2_TEMP:
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
			delay_1us();
			SET_SCK_H();
			delay_1us();
			SET_SCK_L();
		break;
		default:
			break;
	}
	data_temp >>= 7;
	ret = data_temp;
	if(data_temp & 0x10000)//负数的补码,转化为源码
	{
		data_temp &= 0xffff;
		data_temp = ~data_temp;
		data_temp &= 0xffff;
		data_temp += 1;
		ret = - data_temp;
	}
	return(ret); //返回从TM7711中读取的数据
}

转化为温度的关系

这里主要是测试热电偶,转化温度的计算公式和硬件设计相关

void tm7711_test_main(void)
{
	float temperature;

	initTm7711GPIOPin();

	while(1)
	{
		temperature = Read_TM7711(CH1_10HZ) * 3.3 / 128 / 1024 / 1024 / 8;
		printf("the raw value is:%f\n",temperature);
		printf("\n");
		HAL_Delay(500);
	}
}

测试调用

主函数中,进行测试调试


/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  delay_init();
  tm7711_test_main();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

本文使用工程代码如下

(1条消息) STM32调试TM7711驱动原理图驱动源代码,参考如下博客,有原理图设计资源-CSDN文库

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

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

相关文章

STM32 学习笔记_8 定时器中断:输入捕获

输入捕获 输入引脚发生跳变时&#xff0c;cnt的值会被记录到ccr中&#xff0c;可以用于测量pwm信号等。配置成pwmi模式还可以同时测量频率和占空比。主从触发模式可以实现硬件全自动测量。 高级定时器和通用定时器才有的功能。 这个功能只能测数字信号&#xff0c;对于a信号…

【k8s概念】一文搞懂k8s核心概念,吐血整理~两万字~!!!

文章目录 1. k8s简介1.1 k8s概念1.2 作用/功能 2. k8s集群搭建方式3. k8s核心组件3.1 Master Node&#xff08;控制平面组件&#xff09;3.2 Worker Node 4. k8s核心概念4.1 容器4.2 工作负载——Pod4.3 Pod控制器4.3.1 ReplicationController(RC)4.3.2 ReplicaSet(RS)4.3.3 De…

四大关键举措高效管控企业税务风险

税务风险是指企业在税务管理中&#xff0c;由于涉税行为因未能正确有效地遵守税法规定&#xff0c;而导致企业出现经济损失以及企业形象受损。企业税务风险的来源主要有两方面&#xff1a;第一&#xff0c;企业的纳税行为不符合税收法律法规的规定或对相关的税务政策未能全面理…

隐私计算论文合集「多方安全计算系列」第一期

当前&#xff0c;隐私计算领域正处于快速发展的阶段&#xff0c;涌现出了许多前沿的SOTA算法和备受关注的顶会论文。为了方便社区小伙伴学习最新算法、了解隐私计算行业最新进展和应用&#xff0c;隐语开源社区在GitHub创建了Paper推荐项目awesome-PETs&#xff08;PETs即Priva…

生态伙伴 | 硬创大赛新起航!携手华强科创广场,助力硬科技创业者

01 大赛介绍 中国硬件创新创客大赛始于2015年&#xff0c;由深圳华秋电子有限公司主办&#xff0c;至今已经成功举办八届&#xff0c;赛事范围覆盖华南、华东、华北三大地区&#xff0c;超10个省市区域。 大赛影响了超过45万工程师群体&#xff0c;吸引了35000多名硬创先锋报…

markdown神器 -Typora使用教程笔记2023最新版

文章目录 前言一、下载安装包和魔法工具二、第一步 选择为所有人安装三、第二步 创建桌面快捷方式四、第四步 安装五、第五步 完成安装六、第六步 取消勾选自动更新七、第七步 将魔法文件放在安装路径的根目录八、第八步 恭喜你&#xff0c;激活完成总结魔法工具获取方式 前言 …

{嵌入式操作系统}我国为什么要自主研发国产嵌入式操作系统

嵌入式操作系统不同于传统的桌面操作系统&#xff0c;用户不能直接执行它们&#xff0c;不同于桌面操作系统的无处不在&#xff0c;嵌入式操作系统隐藏在我们的视野之外&#xff0c;很多人甚至不知道它们的存在。 什么是嵌入式操作系统&#xff0c;它与非嵌入式操作系统有何不…

整合营销和内容营销哪个好,有什么区别

如果想做自媒体运营&#xff0c;不管是品牌还是个体从业者&#xff0c;其实都要学会如何去营销。这个也分为很多种方式&#xff0c;比如整合营销和内容营销。今天&#xff0c;来和大家谈谈整合营销和内容营销哪个好&#xff0c;如何才能将他们应用好? 要想回答这个问题&#x…

Linux实操篇---常用的基本命令4(磁盘查看和分区类)

一、磁盘查看和分区类 du查看文件和目录占用的磁盘空间 du&#xff1a;disk usage 磁盘占用情况 基本语法&#xff1a; du 目录/文件 显示目录下每个字母里的磁盘使用情况选项说明&#xff1a; 选项功能-h以人们较易阅读的GBytes&#xff0c;MBytes&#xff0c;KBytes等…

android waklock锁阻止休眠调试

上层wakelock 锁获取 adb shell dumpsys powerLooper state:Looper (PowerManagerService, tid 30) {aabc9c2}Message 0: { when42s654ms what4 targetcom.android.server.power.PowerManagerService$PowerManagerHandler }Message 1: { when9m39s94ms what1 targetcom.android…

一种通用的业务监控触发方案设计 | 京东云技术团队

一、背景 业务监控是指通过技术手段监控业务代码执行的最终结果或者状态是否符合预期&#xff0c;实现业务监控主要分成两步&#xff1a;一、在业务系统中选择节点发送消息触发业务监控&#xff1b;二、系统在接收到mq消息或者定时任务调度时&#xff0c;根据消息中或者任务中…

【Python Matplotlib】零基础也能轻松掌握的学习路线与参考资料

Python Matplotlib是一个流行的数据可视化工具&#xff0c;可以帮助数据科学家和分析师更好地理解数据。本文将介绍Python Matplotlib的学习路线&#xff0c;参考资料和优秀实践。 文章目录 一、Python Matplotlib的学习路线二、Python Matplotlib参考资料三、Python Matplotl…

ChatGPT的使用体验及教程

ChatGPT对社会带来了什么影响&#xff1f; ChatGPT的出现对社会产生了广泛的影响&#xff0c;主要体现在以下几个方面&#xff1a; ① 提升了人工智能领域的发展水平&#xff1a;ChatGPT在最初发布时获得了广泛的关注&#xff0c;并受到了人工智能领域专家和研究者的高度评价。…

OpenGL实战-调试

glGetError() OpenGL文档&#xff0c;可以查询函数出现的错误的对应原因。  默认情况下glGetError只会打印错误数字&#xff0c;如果你不去记忆的话会非常难以理解。通常我们会写一个助手函数来简便地打印出错误字符串以及错误检测函数调用的位置。 GLenum glCheckError_(co…

SpringBoot——RESTful风格以及如何快速发送不同方式的请求

RESTful风格&#xff1a; 简单来说&#xff0c;RESTful就是一种将请求方式融合到路径中的一种请求路径书写风格&#xff0c;注意这里是风格&#xff0c;不是规定&#xff0c;我们也可以不使用他或者不是非常严格的按照他规定的样式来写&#xff0c;但是由于行业中大多数的人在…

Boost电路的参数设计

本文以实例方式介绍Boost电路的参数设计方法。项目需求&#xff1a;12V升压至50V&#xff0c;功率35W。 先看示例电路图&#xff0c;如下图所示。 在进行具体的参数计算之前&#xff0c;我们先简要的分析一下Boost电路的工作原理。 1、我们假设&#xff0c;C3和C4的容值相对于负…

发挥数据潜能,为在金融服务行业进行创新做好准备

发挥数据潜能&#xff0c;为在金融服务行业进行创新做好准备 为何选择 NetApp 的金融服务&#xff1f; 作为云专家&#xff0c;我们将确保始终适时适地提供财务数据&#xff0c;以推动转型。我们将消除数据孤岛&#xff0c;提供实时的市场就绪分析&#xff0c;借助经验证的 AI…

易基因:多组学关联分析及组学分子实验验证方法(表观组+转录组+微生物组)|干货系列

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 生物过程具有复杂性和整体性&#xff0c;单组学数据难以系统全面解析复杂生理过程的分子调控机制。而多组学&#xff08;Multi-omics&#xff09;联合分析可同时实现从“因”和“果”两个…

Cartographer源码阅读---后端优化思路

Cartographer的后端优化是借用SPA&#xff08;Sparse Pose Adjustment&#xff09;优化算法的思想. 其主要步骤如下: 确定两个节点在global坐标系下的相对位姿变换.通过其它方式再次获取这两个节点的相对位姿变化对这两个相对位姿变换的差的最小二乘问题进行求解进行求解后得到…

nifi DBCPconnectpool 连接oracle 死链接

nifi DBCPconnectpool 连接oracle 死链接 问题展示问题解决后言官网中文网Groovy脚本学习 问题展示 原因&#xff0c;nifi 连接oracle因为网络波动出现死链接&#xff0c;我的数据同步停止于前一天晚上一点半左右&#xff0c;因为最近一致出现这个问题&#xff0c;综合判断之下…