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

文章介绍了如何使用STM32微控制器驱动TM7711高精度ADC,重点在于硬件设计中的电平转换和软件设计中的原始数据读取驱动。STM32的12位ADC精度不足,而TM7711提供24位精度,适用于热电偶温度测量。代码示例展示了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文库

本文章已经生成可运行项目
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 STM32F103C6T6-TM7711.rar 是一个用于 STM32 微控制器与 24 位模数转换器 TM7711 交互的开发资源压缩包,包含代码示例和串口通信工具,助力开发者在 STM32CUBEIDE 环境下开展项目开发。STM32 系列是意法半导体基于 ARM Cortex-M 内核推出的微控制器,STM32F103C6T6 作为其中一款,具备高性能、低功耗特性,工作频率 48MHz,内置 512KB 闪存和 64KB SRAM,广泛应用于工业控制、消费电子、医疗设备等嵌入式领域。24 位模数转换器 TM7711 是高精度数据采集器件,适用于传感器数据采集、音频处理、电力监测等需精确测量模拟信号的场景,其 24 位分辨率可精准捕捉微小电压变化。在 STM32CUBEIDE 中,开发者借助 HAL 库可简化 STM32TM7711 的通讯。HAL 库即硬件抽象层,是 STM32 官方提供的标准化库,提供统一 API 接口,使开发者无需深挖底层硬件细节,就能便捷配置控制 STM32 各外设,包括 ADC。 压缩包内“STM32F103C6T6_TM7711”文件夹可能含以下内容:1. main.c,主函数文件,含初始化代码及数据采集循环;2. stm32f1xx_hal_msp.c/h,STM32 HAL 库外设支持函数文件,用于配置 ADC、时钟等外设;3. stm32f1xx_hal_conf.h,STM32 HAL 配置文件,定义外设引脚配置、中断优先级等;4. tm7711.h/c,TM7711 驱动程序文件,含初始化、读取数据等函数;5. system_stm32f1xx.c/h,系统初始化代码文件,设置 CPU 时钟及启动向量表。“Pegasus Serial
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大牛攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值