stm32驱动max6675温度采集程序_第1页
stm32驱动max6675温度采集程序_第2页
stm32驱动max6675温度采集程序_第3页
stm32驱动max6675温度采集程序_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

stm32驱动max6675温度采集程序意法半导体(STMicroelectronics)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSONMicroelectronics将公司名称改为意法半导体有限公司,意法半导体是世界最大的半导体公司之一。从成立之初至今,ST的增长速度超过了半导体工业的整体增长速度。自1999年起,ST始终是世界十大半导体公司之一。据最新的工业统计数据,意法半导体(STMicroelectronics)是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核(ST‘sproductportfoliocontainsacomprehensiverangeofmicrocontrollers,fromrobust,low-cost8-bitMCUsupto32-bitARM-basedCortex®-M0andM0+,Cortex®-M3,Cortex®-M4Flashmicrocontrollerswithagreatchoiceofperipherals.SThasalsoextendedthisrangetoincludeanultra-low-powerMCUplatform)。按内核架构分为不同产品:其中STM32F系列有:STM32F103“增强型”系列STM32F101“基本型”系列STM32F105、STM32F107“互联型”系列增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,相当于0.5mA/MHz。MAX6675是带冷端补偿的K型热电偶转换芯片,SO-8封装,精度12位,分辨率0.25℃,测量最高温度1023.75℃。也就是1024/(2的12次方)=0.25℃。VCC-GND接3~5.5V电压;T+,T-分别接K型热电偶正负极;CS为片选,低电平有效;SCK为串行时钟,需要由STM32提供;SO为数据串行输出;接线方式:MAX6675的输出方式是单片机输入时钟脉冲,MAX6675在时钟的下跳沿在SO管脚上输出数据。在数据手册第5页有时序说明,在6页有时序图,时序说明和时序图有差别。本人在读取数据过程中,发现按照时需说明操作,是正确的;而按时序图操作读取的数据有错误。MAX6675每次输出一共是16位数据,第一位也就是D15,是虚拟位;D14-D3,是12位的温度MSB-LSB,也就是高位在前地位在后;D2是一个标志,正常为0,一旦热电偶开路,则为1;D1是ID,通常为0,不懂啥意思,反正我不管怎样读都为0;D0是三态输出。ForceCSlowtooutputthefirstbitontheSOpin.Acompleteserialinterfacereadrequires16clockcycles.Readthe16outputbitsonthefallingedgeoftheclock.Thefirstbit,D15,isadummysignbitandisalwayszero.BitsD14–D3containtheconvertedtemperatureintheorderofMSBtoLSB.BitD2isnormallylowandgoeshighwhenthethermocoupleinputisopen.D1islowtoprovideadeviceIDfortheMAX6675andbitD0isthree-state.以上是时序说明,说的是在CS=0时,第一位就输出了,可以直接读取,不需要时钟,也就是读取16位数据只需要15个时钟;而时序图说的是CS=0之后,需要在第一个时钟下降沿读取第一位数据,也就是16位数据16个时钟;据我的实验,第一个数据不需要时钟,如果输出时钟,则所有数据左移一位。我的实验过程是这样的:首先我按照时序图给出脉冲,结果输出的16位数据范围是1314,1330,1346,1362,1378,1394,1410,所有数据的最低四位都是0010;而我将热电偶开路,返回值为65530,最低四位1010,根据手册,热电偶开路D2应为1。而对1314,1330,1346,1362,1378,1394,1410这一系列数据进行处理之后读取出来的温度为40℃左右,室温大概为20℃左右,所以我猜想可能是采样数据比实际数据左移了一位。这时我想起来D0是三态输出,我之前配置STM32接SO的管脚为上拉输入,所以输入的D0应为1,如果我将STM32与SO连接的管脚设为下拉输入,D0应该为0。不出我所料,果然,采集回来的数据变成1312,1296,1328,1280,正好是尾数变成了0000,也就验证了我的想法,整体数据比实际数据左移了一位,这样,我就修改程序,按照时序说明来写入,这次所有数据都满足要求,D2在正常时=0,热电偶开路时=1,STM32管脚设为上拉输入时D0=1,下拉输入是D0=0;并且读取回来的温度大概是20℃左右。下面是我写的读取16位数据的程序:。。。。。。。。。。。。。。。。。。。。。。。宏定义部分#defineCs_LGPIOA-》BRR=GPIO_Pin_5#defineCs_HGPIOA-》BSRR=GPIO_Pin_5#defineClk_LGPIOA-》BRR=GPIO_Pin_6#defineClk_HGPIOA-》BSRR=GPIO_Pin_6#defineSo_HGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。读取数据函数u16Read_TC(void){/**************定义变量****************/u16Dat_Out=0;u8Cyc=0;/****************程序******************/Cs_L;for(Cyc=0;Cyc《16;Cyc++){/*第1位在CS被拉低之后产生,不需要时钟,故在第1位将时钟屏蔽*/if(Cyc!=0){Clk_H;Clk_L;}if(So_H){Dat_Out++;}/*第15个时钟之后不再移位*/if(Cyc!=15){Dat_Out《《=1;}Cs_H;returnDat_Out;}读取的数据处理:u16Tem_Handle(u16TC_Num){u16Temp;if(TC_Num&4){LcdString(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论