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

本文使用工程代码如下

(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文库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微生物常见统计检验方法比较及选择

谷禾健康 微生物组经由二代测序分析得到庞大数据结果&#xff0c;其中包括OTU/ASV表&#xff0c;物种丰度表&#xff0c;alpha多样性、beta多样性指数&#xff0c;代谢功能预测丰度表等&#xff0c;这些数据构成了微生物组的变量&#xff0c;大量数据构成了高纬度数据信息。 针…

我的『1024』创作纪念日

目录 ◐机缘 ◑收获 ◐日常 ◑成就 ◐憧憬 记得&#xff0c;2020年07月22日我撰写了第1篇技术博客&#xff1a;《遗传算法实例解析》在这平凡的一天&#xff0c;我赋予了它不平凡的意义也许是立志成为一名专业T作者、也许是记录一段刚实践的经验但在那一刻&#xff0c;我已…

傅里叶分析的历史背景

目录 1. Fourier级数(三角级数)的历史背景 2. 圆和复平面 3. Fourier的大胆猜想 1. Fourier级数(三角级数)的历史背景 自古以来&#xff0c;圆形一直是(现在仍然是&#xff09;最简单的抽象理解形状。您只需要一个中心点和一个半径就可以了。圆上的所有点与圆心的距离都是固定…

Java Web开发:Spring Boot和Spring Cloud的应用和实践

一、介绍 Java Web开发是当今互联网时代中的一项重要技术&#xff0c;随着互联网的发展和应用场景的不断扩大&#xff0c;Java Web开发技术也得到了广泛的应用。而Spring Boot和Spring Cloud作为Java Web开发中最常用的技术之一&#xff0c;已经成为了很多开发者必备的技能。本…

Python常用的开发工具合集

​ Python是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛&#xff0c;越来越多的Python开发工具也涌现出来。但是&#xff0c;对于新手来说&#xff0c;选择一款合适的Python开发工具可…

Git的安装与版本控制

这里写目录标题 原理安装基本使用gitee-IDEA协同开发成员邀请开发组成员指定仓库权限给当前仓库设定分支提交代码时必须向自己的分支提交合并分支 - 无冲突 原理 Git本地有四个工作区域&#xff1a; 工作目录&#xff08;Working Directory&#xff09;、暂存区(Stage/Index)、…

【LeetCode】209.长度最小的子数组

209. 长度最小的子数组 思路一&#xff1a;暴力解法 通过两个for循环&#xff0c;从头开始找符合条件的子序列。暴力解法无法通过本题&#xff0c;超出时间限制&#xff0c;所以仅供参考。 代码如下&#xff1a; 暴力解法1&#xff1a;下面的代码是通过申请一个新的数组&#x…

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QtCreator中qmake命令是什么&#xff1f;2.解决 前言 我在代码中加入了对应的信号和槽&#xff0c;但编译仍然报错&#xff1a; #ifndef PROJECTWIN_H #define PROJECTWIN_Hnamespace Ui { class ProjectWin; }ProjectWin类声…

杂记——24.HTML中空格的写法

前几天写项目时&#xff0c;突然对HTML中空格的写法感兴趣&#xff0c;于是搜了一下&#xff0c;现在对其进行总结 HTML不是一种编程语言&#xff0c;而是一种超文本标记语言 (markup language)&#xff0c;是网页制作所必备的。超文本”就是指页面内可以包含图片、链接&#…

创建基于oracle jdk8的自定义docker镜像

创建基于oracle jdk8的自定义docker镜像 1:查看服务器java版本&#xff1a; 如果服务器的版本是open-jdk&#xff0c;则进行如下操作 拷贝相关jdk压缩包&#xff08;.tar.gz后缀&#xff09;到服务器目录&#xff08;例&#xff1a;/usr/local&#xff09; 解压&#xff1a;…

【18】SCI易中期刊推荐——计算机科学(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

Redis数据结构——动态字符串、Dict、ZipList

一、Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 获取字符串长度…

基于Python的学生成绩管理系统

末尾获取源码 开发语言&#xff1a;python 后端框架&#xff1a;django 数据库&#xff1a;MySQL5.7 开发软件&#xff1a;Pycharm 是否Maven项目&#xff1a;是 目录 一、项目简介 二、系统功能 三、系统项目截图 四、核心代码 4.1登录相关 4.2文件上传 4.3封装 一、项…

《程序员面试金典(第6版)》面试题 16.19. 水域大小(深度优先搜索,类似棋盘类问题,八皇后的简化版本,C++)

题目描述 你有一个用于表示一片土地的整数矩阵land&#xff0c;该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小&#xff0c;返回值需要从小到…

【下载】【you-get】用电脑下载网页视频

分享一下&#xff0c;此方法是在网络上看到的&#xff0c;但忘了出处。 一、前提 电脑安装了python软件&#xff0c;版本无要求。建议上官网下载软件。记得配置好环境&#xff08;将pyhton的scripts文件夹的路径加到用户变量里&#xff09;。 二、方法 1、安装you-get库 &am…

Java8之Stream操作

Java8之Stream操作 stream干啥用的&#xff1f;创建流中间操作终结操作好文推荐----接口优化思想 stream干啥用的&#xff1f; Stream 就是操作数据用的。使用起来很方便 创建流 → 中间操作 → 终结操作 Stream的操作可以分为两大类&#xff1a;中间操作、终结操作 中间操作可…

前端自学好还是培训好?女生有多适合学前端,我来告诉你!

2023年了&#xff0c;你是否还在迷茫或者每个月拿着5/6k做着卷死的工作&#xff0c;不但存不下钱还不能好好享受生活&#xff0c;如果是&#xff0c;那你真该考虑一下转行了。 好程序员先说说前端到底怎么开始学&#xff1a; 有的伙伴说今年28岁了&#xff0c;学的会计&#xf…

Java --- redis7之布隆过滤器BloomFilter

目录 一、布隆过滤器BloomFilter 1.1、面试题 1.2、 布隆过滤器简介 1.2.1、设计思想 1.3、特点 1.4、布隆过滤器原理 1.4.1、实现原理与数据结构 1.4.2、添加key、查询key 1.4.3、hash冲突导致数据不精准 1.4.4、三步骤 1.4.5、布隆过滤器误判&#xff0c;为什么不…

xormplus是xorm的增强版,为xorm提供类似ibatis的配置文件及动态SQL支持

简介 xorm是一个简单而强大的Go语言ORM库&#xff0c;通过它可以使数据库操作非常简便。本库是基于原版xorm的定制增强版本&#xff0c;为xorm提供类似ibatis的配置文件及动态SQL支持&#xff0c;支持AcitveRecord操作。 github地址:https://github.com/armingli/xorm //安装…