#include "max6675.h"
float temprature1,temprature2,temprature3,temprature4;
#define SCLK1_H GPIO_SetBits(TC1_MAX6675_PORT, TC1_SCK)
#define SCLK1_L GPIO_ResetBits(TC1_MAX6675_PORT, TC1_SCK)
#define DIN1 GPIO_ReadInputDataBit(TC1_MAX6675_PORT, TC1_SO)
#define SCLK2_H GPIO_SetBits(TC2_MAX6675_PORT, TC2_SCK)
#define SCLK2_L GPIO_ResetBits(TC2_MAX6675_PORT, TC2_SCK)
#define DIN2 GPIO_ReadInputDataBit(TC2_MAX6675_PORT,TC2_SO)
#define SCLK3_H GPIO_SetBits(TC3_MAX6675_PORT,TC3_SCK)
#define SCLK3_L GPIO_ResetBits(TC3_MAX6675_PORT,TC3_SCK)
#define DIN3 GPIO_ReadInputDataBit(TC3_MAX6675_PORT,TC3_SO)
#define SCLK4_H GPIO_SetBits(TC4_MAX6675_PORT,TC4_SCK)
#define SCLK4_L GPIO_ResetBits(TC4_MAX6675_PORT,TC4_SCK)
#define DIN4 GPIO_ReadInputDataBit(TC4_MAX6675_PORT,TC4_SO)
void Init_MAX6675_GPIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(TC1_RCC_MAX6675_SCK|TC2_RCC_MAX6675_SCK|TC3_RCC_MAX6675_SCK|TC4_RCC_MAX6675_SCK, ENABLE);
GPIO_InitStructure.GPIO_Pin = TC1_SCK|TC1_CS;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(TC1_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC2_SCK|TC2_CS;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(TC2_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC3_SCK|TC3_CS;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(TC3_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC4_SCK|TC4_CS;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(TC4_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC1_SO;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(TC1_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC2_SO;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(TC2_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC3_SO;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(TC3_MAX6675_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = TC4_SO;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
GPIO_Init(TC4_MAX6675_PORT, &GPIO_InitStructure);
GPIO_SetBits(TC1_MAX6675_PORT, TC1_CS );//CS1=1;
GPIO_ResetBits(TC1_MAX6675_PORT, TC1_SCK );//SCK1=0;
GPIO_SetBits(TC2_MAX6675_PORT, TC2_CS );//CS2=1;
GPIO_ResetBits(TC2_MAX6675_PORT, TC2_SCK );//SCK2=0;
GPIO_SetBits(TC3_MAX6675_PORT, TC3_CS );//CS3=1;
GPIO_ResetBits(TC3_MAX6675_PORT, TC3_SCK );//SCK3=0;
GPIO_SetBits(TC4_MAX6675_PORT, TC4_CS );//CS4=1;
GPIO_ResetBits(TC4_MAX6675_PORT, TC4_SCK );//SCK4=0;
}
void MAX6675_Read_Temp(unsigned char channel)
{
uint16_t temp=0;
char i;
switch(channel)
{
case 1:
GPIO_ResetBits(TC1_MAX6675_PORT, TC1_CS);//CS=0;
for(i=0;i<=15;i++)
{
SCLK1_H;//read data SO
SysTick_delay_ms(1);
temp<<=1;
if(DIN1)
temp|=0x0001;
SCLK1_L;
SysTick_delay_ms(1);
}
GPIO_SetBits(TC1_MAX6675_PORT, TC1_CS);//CS=1;
temp>>=3;
temprature1 = temp*0.25;
break;
case 2:
GPIO_ResetBits(TC2_MAX6675_PORT,TC2_CS);//CS=0;
for(i=0;i<=15;i++)
{
SCLK2_H;//read data SO
SysTick_delay_ms(1);
temp<<=1;
if(DIN2)
temp|=0x0001;
SCLK2_L;
SysTick_delay_ms(1);
}
GPIO_SetBits(TC2_MAX6675_PORT, TC2_CS);//CS=1;
temp>>=3;
temprature2 = temp*0.25;
break;
case 3:
GPIO_ResetBits(TC3_MAX6675_PORT,TC3_CS);//CS=0;
for(i=0;i<=15;i++)
{
SCLK3_H;//read data SO
SysTick_delay_ms(1);
temp<<=1;
if(DIN3)
temp|=0x0001;
SCLK3_L;
SysTick_delay_ms(1);
}
GPIO_SetBits(TC3_MAX6675_PORT, TC3_CS);//CS=1;
temp>>=3;
temprature3 = temp*0.25;
break;
case 4:
GPIO_ResetBits(TC4_MAX6675_PORT,TC4_CS);//CS=0;
for(i=0;i<=15;i++)
{
SCLK4_H;//read data SO
SysTick_delay_ms(1);
temp<<=1;
if(DIN4)
temp|=0x0001;
SCLK4_L;
SysTick_delay_ms(1);
}
GPIO_SetBits(TC4_MAX6675_PORT, TC4_CS);//CS=1;
temp>>=3;
temprature4 = temp*0.25;
break;
}
}
|