STM32F407+MAX31855 +K型热电偶进行测温方案 一、首先硬件方面的实现: 图1.MAX31855测温电路原理图 注意: 1.由于MAX31855本身不具备抗干扰性,要添加抗干扰电路 2.热电偶分正负极,注意别接反了 二、软件程序大概分为三部分 2.1首先是声明和定义 [mw_shl_code=c,true]#define GPIOA_MAX31855_SCK GPIO_Pin_1 #define GPIOC_MAX31855_CS GPIO_Pin_5 #define GPIOC_MAX31855_SC GPIO_Pin_4 #define GPIOA_MAX31855_SCK_H GPIO_SetBits(GPIOA,GPIOA_MAX31855_SCK) #define GPIOA_MAX31855_SCK_L GPIO_ResetBits(GPIOA,GPIOA_MAX31855_SCK) #define GPIOC_MAX31855_CS_H GPIO_SetBits(GPIOC,GPIOC_MAX31855_CS) #define GPIOC_MAX31855_CS_L GPIO_ResetBits(GPIOC,GPIOC_MAX31855_CS) #define GPIOC_MAX31855_SC_IN (GPIOC->IDR & GPIOC_MAX31855_SC)[/mw_shl_code] 2.2MAX31855的初始化 图2.时序图 [mw_shl_code=c,true]void MAX31855_Init(){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIOA_MAX31855_SCK;//max31855 sck GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIOC_MAX31855_CS;//max31855 cs GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIOC_MAX31855_SC;//max31855 sc GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//注意读数据的端口要设置为普通输入模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); 篇幅过长,未完待续……
|