熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
QQ820270087 發(fā)表于 2020-6-22 15:36 能提供具體電路圖和程序嗎?學(xué)習(xí)下,謝謝。 |
現(xiàn)在有沒有比AD6675更便宜的方案呢? |
"// MAX31855 initialization function" Is it for STM32 ? |
//MAX31855 初始化函數(shù) void MAX31855_Init(void) //IO初始化 { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PORTA時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能PORTC時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE); //使能PORTF時(shí)鐘 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7| GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14; //PF6 SCK,PF0~PF15 CS 設(shè)為推挽輸出; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP ; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化GPIO PF0~PF15 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PF6 SCK,PF0~PF15 CS 設(shè)為推挽輸出; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP ; //推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIO PF0~PF15 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIO PF0~PF15 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5; //GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING ; //;PF7 MISO 設(shè)為浮空輸入 = GPIO_Mode_IPD ; //;PF7 MISO 設(shè)為下拉輸入 //GPIO_Mode_IPU 上拉輸入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; //;PF7 MISO 設(shè)為浮空輸入 GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOF 0, // GPIO_ResetBits(GPIOC,GPIO_Pin_0); // GPIO_SetBits(GPIOC,GPIO_Pin_1); //PC0 輸出高 MAX_SCK1=0; // PC0 MAX_SCK2=0; // PC0 MAX_SCK3=0; // PC0 MAX_SCK4=0; // PC0 MAX_SCK5=0; // PC0 MAX_SCK6=0; // PC0 MAX_SCK7=0; // PC0 MAX_SCK8=0; // PC0 MAX_SCK9=0; // PC0 MAX_SCK10=0; // PC0 MAX_SCK11=0; // PC0 MAX_SCK12=0; // PC0 MAX_SCK13=0; // PC0 MAX_SCK14=0; // PC0 MAX_SCK15=0; // PC0 MAX_SCK16=0; // PC0 MAX_SCK17=0; // PC0 MAX_CS1=1; // PC1 MAX_CS2=1; // PC2 MAX_CS3=1; // PC3 MAX_CS4=1; // PC4 MAX_CS5=1; // PC5 MAX_CS6=1; // PF0 MAX_CS7=1; // PC1 MAX_CS8=1; // PC2 MAX_CS9=1; // PC3 MAX_CS10=1; // PC4 MAX_CS11=1; // PC5 MAX_CS12=1; // PF0 MAX_CS13=1; // PC1 MAX_CS14=1; // PC2 MAX_CS15=1; // PC3 MAX_CS16=1; // PC4 MAX_CS17=1; // PC5 } void MAX31855_1_Read(void) { int spi1; u32 SPI1_Data=0; MAX_CS1=0; delay_us(1); for(spi1=31; spi1>=0; spi1--) //*也是同IIC的讀格式類似*/ { MAX_SCK1=1; //*第1位在CS被拉低之后產(chǎn)生,不需要時(shí)鐘,故在第1位將時(shí)鐘屏蔽 delay_us(1); if (MAX_MISO1) SPI1_Data|=((u32)1<<spi1); //*第31個(gè)時(shí)鐘之后不再移位*/ //{ Dat_Out |= 1;} MAX_SCK1=0; delay_us(1); } MAX_CS1=1; //PC02, Pin6 MAX31855_1.Data=SPI1_Data; MAX31855_1.Thermocouple=((MAX31855_1.Data>>18)&0x1fff)*25; //提取D31-D18,14位數(shù)據(jù) MAX31855_1.Internal=((MAX31855_1.Data>>4)&0x07ff)*625 ; //提取D15-D4,12位數(shù)據(jù) } |
樓主寫的程序很不錯(cuò)👍 不過這個(gè)max6675很貴的,而且要停產(chǎn)了, 我推薦用的max31855K 性能很好 |
為什么給的溫度是760,讀出來是770呢 |
songxia8013 發(fā)表于 2020-4-10 20:43 應(yīng)該發(fā)送的數(shù)據(jù)有問題,程序整體思路沒問題,但是沒時(shí)間搞了,有需要的話下載后調(diào)試下就好了, |
左側(cè)是770,為什么右側(cè)是505呢?不應(yīng)該是一樣的嗎?好奇怪。 |
Powered by 單片機(jī)教程網(wǎng)