MAX31865模块和PT100实现温度测量启用配置笔记教程

0、前言

        最初接触这个MAX31865模块,还是研究生同学请教我一个问题,他跟我说这个PT100、PT1000温度传感器模块,无论怎么调,都弄不出来,网上的工程代码找了一个又一个,就是不成功。

        然后简单网上了解了一下后,发现没啥难的啊,不就是一个SPI协议写一写指令,通信驱动一下就可以用了吗?

        必须搞起来,然而打脸来的很快很快,我拿到同学给的几个模块后,我无论怎么写都没有成功,一度开始自我怀疑自己代码是不是有Bug,对写的代码反复反复的检查了好几回,没有发现任何问题啊,到底为什么???要是弄不出来,那不是很尴尬,让我的能力被严重的质疑?

        修改代码解决不了问题后,我开始怀疑这批传感器模块有问题,因此用示波器和逻辑分析仪对SPI的波形进行解析,都只有发给模块的信号,但是没有返回数据波形。

        换了一个厂家的模块后,果然,是店家的硬件产品有质量问题,换一个店家模块后,原来一样的程序代码可以正常跑了。

        因为一个模块质量问题,白白emo了好几天,必须记录一下,记住这沉重的经历,提醒今后在项目研发中,同样关注硬件设备是否正常?

1、什么是MAX31865

        对于温度模块,在接触单片机开发的时候,或多或少都是有了解到的,比如大多数供学习用的开发板就会集成DS18B20这个温湿度模块,还有DH11。

        但对于MAX31865这个模块,如果不是特殊的业务项目场景需要,可能就会接触的比较少了。因为前面的DS18B20和DH11已经可以满足绝大多数的普通单片机学习使用了。

   MAX31865也是一个用于测温的模块,通常配合PT100、PT1000一起使用,非常好的一个特性就是防水,可测量的温度范围值比其它模块的更大。

        用厂家的话来说就是,MAX31865是一款易于使用的电阻-数字转换器,针对铂电阻温度检测器(RTD)进行了优化。MAX31865这个传感器模块目前已经广泛应用在工业设备,医疗设备,和仪器仪表中

        关于MAX31865这个传感器芯片的介绍,在网上已经有很多了,因此在这里就不过度描述。

2、MAX31865资料手册阅读

        在帮助同学或者网友解决问题时,和他们沟通交流得知,很多处于起步的阶段的同学,是还不会阅读资料手册,或者说,看到资料手册,不知道应该怎么阅读,根本就是一个无从下手的状态。因此在这个部分,主要是手把手的带领阅读资料手册。

        在拿到一个芯片资料手册时,我们需要明白,产商给的技术手册,里面内容是非常多的,主要目的是为了面向的不同的群体,如电子工程师,嵌入式软件工程师、技术支持工程师等。因此,不同工作群体的关注点的内容是不一样的。我们需要根据实际需要进行针对性的快速阅读,本文主要是面向编写程序代码软件实现对MAX31865这个模块使用,因此更多需要关注的就是逻辑时序图、寄存器指令地址和数据格式解析转换等内容。

(1)、逻辑时序图阅读

①、时序图电气特性注释表

        一般芯片手册的时序图前后,都会有一个这样的表格,说明了时序图中各个缩写的含义及每个数据的时序范围信息,供开发者在阅读逻辑时序图时不会云里雾里,能帮助开发者更好的阅读理解。

②、SPI读取数据传输

        在下面的数据读取时序图中,SPI的片选引脚CS拉低电平,表示选中了这个SPI设备芯片。在完成数据信号传输后,CS引脚拉高。

        时钟信号SCLK则在CS拉低后,开始产生改变高低电平,产生上升沿和下降沿,供SDI和SDO进行数据传输。

SDI则是根据信号SCLK的上升沿和下降沿的时间范围内,拉低、拉高SDI引脚,从而达到,发送0、1信号的目的。需要注意的是,SDI的时序图部分,有两条信号线,这表示的是,这个引脚,可以有两种情况,可以低电平开始,或者是以高电平开始。

SDO最开始的一段WRITE ADDRESS BYTE时间内是处于中间位置的,这表示的是,在这一时刻,SDO不需要进行操作,状态可以任意。在SDO的READ DATA BYTE这个时间范围,则是利用SCLK上升沿和下降沿进行接收高低电平数据。

        除了对这些引脚的高低电平状态理解外,还需要留意时间间隔,必须严格遵守厂家的时间间隔要求,不然编写的程序代码可能不能正确的操作芯片。

③、SPI写数据传输

        SPI写数据传输的逻辑时序图解析理解方法和SPI读取数据传输类似,这里不过多阐述。

(2)、寄存器地址

        在MAX31865中,有8个读寄存器地址5个写寄存器地址。分别是配置寄存器、RTD数据,故障阈值、错误状态信息寄存器对应的地址,具体描述,见下图所示。在后续的MAX31865的驱动及正常的温度解析代码中,只需要对这些寄存器地址的写入或读取数据,即可完成正常的测温功能。

(3)、温度数据转换

        根据MAX31865官方技术文档的内容可知,对温度解析,可以采取计算法直接将温度进行解析计算,也可以采用查表的方式,如果采用查表法,则需要将MAX31865提供的表格也放到程序代码中。

        使用PT100 RTD、400Ω高精度低漂移基准电阻的典型情况下,PT100、400Ω RREF的温度示例。

3、MAX31865通信代码示例

(1)、max31865.h

#ifndef __MAX31865_H
#define __MAX31865_H
#include "stm32f4xx.h"
#include 
#include "delay.h"
#include "sys.h"
#define MAX31865_SPI_CS           PCout(13)
#define MAX31865_SPIx             SPI1
#define MAX31865_CS_Port          GPIOC
#define MAX31865_CS_Pin           GPIO_Pin_13
#define MAX31865_RDY_Port         GPIOC
#define MAX31865_RDY_Pin          GPIO_Pin_10
#define RREF                  (400)
//PT100分度表里的最低温度
#define RTD_TABLE_TEMP_MIN    -200
//PT100分度表里的最高温度
#define RTD_TABLE_TEMP_MAX    650
void MAX31865_GPIO_Init(void);
void MAX31865_SB_Write(uint8_t addr, uint8_t wdata);
uint8_t MAX31865_SB_Read(uint8_t addr);
void MAX31865_Init();
uint16_t MAX31865_Find_Index (double Rt);
double MAX31865_Conver_Temperature(double Rt);
float MAX31865_Get_Temperature(void);
#endif

(2)、max31865.c

#include "max31865.h"
#include "index.h"
/**
  * @brief  MAX31865 GPIO初始化
  * @param  None
  * @retval None
  */
void MAX31865_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    SPI_InitTypeDef SPI_InitStructure;
    /* 1. 使能 GPIO 和 SPI1 时钟 */
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
    /* 2. 配置 SCK (PA5), MISO (PB4), MOSI (PB5) 为复用推挽输出 */
    // PA5 - SCK
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    // PB4 - MISO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    // PB5 - MOSI
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    // 设置引脚复用为 SPI1
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);   // PA5 -> SPI1_SCK
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);   // PB4 -> SPI1_MISO
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);   // PB5 -> SPI1_MOSI
    /* 3. 配置 CS(片选)引脚 PC13 */
    GPIO_InitStructure.GPIO_Pin = MAX31865_CS_Pin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(MAX31865_CS_Port, &GPIO_InitStructure);
    GPIO_SetBits(MAX31865_CS_Port, MAX31865_CS_Pin);  // 默认高电平,不选中
    /* 4. 配置 RDY(就绪信号)引脚 PC10 */
    GPIO_InitStructure.GPIO_Pin = MAX31865_RDY_Pin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(MAX31865_RDY_Port, &GPIO_InitStructure);
    /* 5. 复位 SPI1(可选) */
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
    /* 6. 配置 SPI1 参数 */
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 全双工模式
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                       // 主机模式
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                   // 8位数据长度
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                         // CPOL = 1(空闲为高)
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                        // CPHA = 1(第二个边沿采样)
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                           // 软件控制NSS
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;// 分频系数128,约 84/128 ≈ 0.656 MHz
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                  // MSB在前
    SPI_InitStructure.SPI_CRCPolynomial = 7;                            // CRC多项式(不启用)
    SPI_Init(SPI1, &SPI_InitStructure);
    /* 7. 启动 SPI1 */
    SPI_Cmd(SPI1, ENABLE);
}
/**
  * @brief  向 MAX31865 寄存器写入一个字节
  * @param  addr: 寄存器地址
  * @param  wdata: 要写入的数据
  * @retval None
  */
void MAX31865_SB_Write(uint8_t addr, uint8_t wdata)
{
    uint8_t Tx_Data[2];
    Tx_Data[0] = addr;
    Tx_Data[1] = wdata;
    MAX31865_SPI_CS = 0;
    // 发送第一个字节(地址)
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData(SPI1, addr);
    // 等待传输完成
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
    // 发送第二个字节(数据)
    SPI_I2S_SendData(SPI1, wdata);
    // 等待最后一个字节发送完成
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) != RESET);
    MAX31865_SPI_CS = 1;
}
/**
  * @brief  从 MAX31865 读取一个字节
  * @param  addr: 寄存器地址
  * @retval 读取到的数据
  */
uint8_t MAX31865_SB_Read(uint8_t addr)
{
    uint8_t Rx_Data;
    MAX31865_SPI_CS = 0;
    // 发送地址
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData(SPI1, addr);
    // 等待接收
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
    Rx_Data = SPI_I2S_ReceiveData(SPI1);
    // 发送 dummy byte 获取数据
    SPI_I2S_SendData(SPI1, 0xFF);
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
    Rx_Data = SPI_I2S_ReceiveData(SPI1);
    MAX31865_SPI_CS = 1;
    return Rx_Data;
}
/**
  * @brief  MAX31865模块初始化配置
  * @param  None
  * @retval None
  */
void MAX31865_Init()
{
    MAX31865_GPIO_Init();
    MAX31865_SB_Write(0x80,0xC1);//二线、四线配置
    //MAX31865_SB_Write(0x80,0xD1);//三线配置
    delay_ms(100);
    printf("%02X\r\n", MAX31865_SB_Read(0x00));
}
/**
  * @brief  查找索引
  * @param  Rt:温度值
  * @retval TableCount表中的位置下标
  */
uint16_t MAX31865_Find_Index (double Rt)
{
    uint16_t i;
    uint16_t TableCount = sizeof(RTD_Table)/sizeof(RTD_Table[0]);
    for (i=0; i< TableCount; i++)
    {
        if (RTD_Table[i] > Rt)
        {
            return (i-1);
        }
    }
    return (TableCount);
}
/**
  * @brief  通过电压查找分度表计算对应温度
  * @param  Rt:温度值
  * @retval 温度值
  */
double MAX31865_Conver_Temperature(double Rt)
{
    unsigned short Index;
    double temperature;
    if (Rt < RTD_Table[0])   // 电阻值小于表格最值低于量程下限。
    {
        return 0;
    }
    if (Rt > RTD_Table[849]) // 电阻值大于表格最大值,超出量程上限 。
    {
        return 0;
    }
    //查找当前电阻在分度表中的位置索引
    Index = MAX31865_Find_Index(Rt);
    temperature = (Rt - RTD_Table[Index]) / (RTD_Table[Index + 1]- RTD_Table[Index]) + Index + RTD_TABLE_TEMP_MIN;
    return temperature;
}
/**
  * @brief  获取温度
  * @param  None
  * @retval 温度值
  */
float MAX31865_Get_Temperature(void)
{
    unsigned int Data;
    float Rt;
    float temperature;
    Data=MAX31865_SB_Read(0x01)<<8;
    Data|=MAX31865_SB_Read(0x02);
    Data>>=1;  //去掉Fault位
    printf("Read=0x%02X\r\n",Data);
    Rt = (float)Data/32768.0f*RREF;            //计算RTD电阻值
    printf("Rt=0x%.1f\r\n",Rt);
    //计算温度值
    temperature = MAX31865_Conver_Temperature(Rt);    //查找分度表获取温度
    //temperature = (Rt-100.0f) / 0.385055f;         //计算法计算温度
    printf("tempture: %f C\r\n", temperature);
    return temperature;
}

(3)、index.h

#ifndef __INDEX_H__
#define __INDEX_H__
//根据MAX31865的技术文档,使用PT100 RTD、400Ω高精度低漂移基准电阻的典型情况下,PT100、400Ω RREF的温度示例。
const double RTD_Table[] = {
18.52      ,    18.952    ,    19.384    ,    19.815    ,    20.247    ,    20.677    ,    21.108    ,    21.538    ,    21.967    ,    22.397    ,
22.825    ,    23.254    ,    23.682    ,    24.11      ,    24.538    ,    24.965    ,    25.392    ,    25.819    ,    26.245    ,    26.671    ,
27.096    ,    27.522    ,    27.947    ,    28.371    ,    28.796    ,    29.22      ,    29.643    ,    30.067    ,    30.49      ,    30.913    ,
31.335    ,    31.757    ,    32.179    ,    32.601    ,    33.022    ,    33.443    ,    33.864    ,    34.284    ,    34.704    ,    35.124    ,
35.543    ,    35.963    ,    36.382    ,    36.8      ,    37.219    ,    37.637    ,    38.055    ,    38.472    ,    38.889    ,    39.306    ,
39.723    ,    40.14     ,    40.556    ,    40.972    ,    41.388    ,    41.803    ,    42.218    ,    42.633    ,    43.048    ,    43.462    ,
43.876    ,    44.29      ,    44.704    ,    45.117    ,    45.531    ,    45.944    ,    46.356    ,    46.769    ,    47.181    ,    47.593    ,
48.005    ,    48.416    ,    48.828    ,    49.239    ,    49.649    ,    50.06      ,    50.47      ,    50.881    ,    51.291    ,    51.7    ,
52.11      ,    52.519    ,    52.928    ,    53.337    ,    53.746    ,    54.154    ,    54.562    ,    54.97      ,    55.378    ,    55.786    ,
56.193    ,    56.6      ,    57.007    ,    57.414    ,    57.821    ,    58.227    ,    58.633    ,    59.039    ,    59.445    ,    59.85    ,
60.256    ,    60.661    ,    61.066    ,    61.471    ,    61.876    ,    62.28      ,    62.684    ,    63.088    ,    63.492    ,    63.896    ,
64.3      ,    64.703    ,    65.106    ,    65.509    ,    65.912    ,    66.315    ,    66.717    ,    67.12      ,    67.522    ,    67.924    ,
68.325    ,    68.727    ,    69.129    ,    69.53      ,    69.931    ,    70.332    ,    70.733    ,    71.134    ,    71.534    ,    71.934    ,
72.335    ,    72.735    ,    73.134    ,    73.534    ,    73.934    ,    74.333    ,    74.732    ,    75.131    ,    75.53      ,    75.929    ,
76.328    ,    76.726    ,    77.125    ,    77.523    ,    77.921    ,    78.319    ,    78.717    ,    79.114    ,    79.512    ,    79.909    ,
80.306    ,    80.703    ,    81.1      ,    81.497    ,    81.894    ,    82.29      ,    82.687    ,    83.083    ,    83.479    ,    83.875    ,
84.271    ,    84.666    ,    85.062    ,    85.457    ,    85.853    ,    86.248    ,    86.643    ,    87.038    ,    87.432    ,    87.827    ,
88.222    ,    88.616    ,    89.01      ,    89.404    ,    89.798    ,    90.192    ,    90.586    ,    90.98      ,    91.373    ,    91.767    ,
92.16     ,    92.553    ,    92.946    ,    93.339    ,    93.732    ,    94.124    ,    94.517    ,    94.909    ,    95.302    ,    95.694    ,
96.086    ,    96.478    ,    96.87      ,    97.261    ,    97.653    ,    98.044    ,    98.436    ,    98.827    ,    99.218    ,    99.609    ,
100        ,    100.391    ,    100.781    ,    101.172    ,    101.562    ,    101.953    ,    102.343    ,    102.733    ,    103.123    ,    103.513    ,
103.903    ,    104.292    ,    104.682    ,    105.071    ,    105.46    ,    105.849    ,    106.238    ,    106.627    ,    107.016    ,    107.405    ,
107.794    ,    108.182    ,    108.57    ,    108.959    ,    109.347    ,    109.735    ,    110.123    ,    110.51    ,    110.898    ,    111.286    ,
111.673    ,    112.06    ,    112.447    ,    112.835    ,    113.221    ,    113.608    ,    113.995    ,    114.382    ,    114.768    ,    115.155    ,
115.541    ,    115.927    ,    116.313    ,    116.699    ,    117.085    ,    117.47    ,    117.856    ,    118.241    ,    118.627    ,    119.012    ,
119.397    ,    119.782    ,    120.167    ,    120.552    ,    120.936    ,    121.321    ,    121.705    ,    122.09    ,    122.474    ,    122.858    ,
123.242    ,    123.626    ,    124.009    ,    124.393    ,    124.777    ,    125.16    ,    125.543    ,    125.926    ,    126.309    ,    126.692    ,
127.075    ,    127.458    ,    127.84    ,    128.223    ,    128.605    ,    128.987    ,    129.37    ,    129.752    ,    130.133    ,    130.515    ,
130.897    ,    131.278    ,    131.66    ,    132.041    ,    132.422    ,    132.803    ,    133.184    ,    133.565    ,    133.946    ,    134.326    ,
134.707    ,    135.087    ,    135.468    ,    135.848    ,    136.228    ,    136.608    ,    136.987    ,    137.367    ,    137.747    ,    138.126    ,
138.506    ,    138.885    ,    139.264    ,    139.643    ,    140.022    ,    140.4      ,    140.779    ,    141.158    ,    141.536    ,    141.914    ,
142.293    ,    142.671    ,    143.049    ,    143.426    ,    143.804    ,    144.182    ,    144.559    ,    144.937    ,    145.314    ,    145.691    ,
146.068    ,    146.445    ,    146.822    ,    147.198    ,    147.575    ,    147.951    ,    148.328    ,    148.704    ,    149.08    ,    149.456    ,
149.832    ,    150.208    ,    150.583    ,    150.959    ,    151.334    ,    151.71    ,    152.085    ,    152.46    ,    152.835    ,    153.21    ,
153.584    ,    153.959    ,    154.333    ,    154.708    ,    155.082    ,    155.456    ,    155.83    ,    156.204    ,    156.578    ,    156.952    ,
157.325    ,    157.699    ,    158.072    ,    158.445    ,    158.818    ,    159.191    ,    159.564    ,    159.937    ,    160.309    ,    160.682    ,
161.054    ,    161.427    ,    161.799    ,    162.171    ,    162.543    ,    162.915    ,    163.286    ,    163.658    ,    164.03    ,    164.401    ,
164.772    ,    165.143    ,    165.514    ,    165.885    ,    166.256    ,    166.627    ,    166.997    ,    167.368    ,    167.738    ,    168.108    ,
168.478    ,    168.848    ,    169.218    ,    169.588    ,    169.958    ,    170.327    ,    170.696    ,    171.066    ,    171.435    ,    171.804    ,
172.173    ,    172.542    ,    172.91    ,    173.279    ,    173.648    ,    174.016    ,    174.384    ,    174.752    ,    175.12    ,    175.488    ,
175.856    ,    176.224    ,    176.591    ,    176.959    ,    177.326    ,    177.693    ,    178.06    ,    178.427    ,    178.794    ,    179.161    ,
179.528    ,    179.894    ,    180.26    ,    180.627    ,    180.993    ,    181.359    ,    181.725    ,    182.091    ,    182.456    ,    182.822    ,
183.188    ,    183.553    ,    183.918    ,    184.283    ,    184.648    ,    185.013    ,    185.378    ,    185.743    ,    186.107    ,    186.472    ,
186.836    ,    187.2    ,      187.564    ,    187.928    ,    188.292    ,    188.656    ,    189.019    ,    189.383    ,    189.746    ,    190.11    ,
190.473    ,    190.836    ,    191.199    ,    191.562    ,    191.924    ,    192.287    ,    192.649    ,    193.012    ,    193.374    ,    193.736    ,
194.098    ,    194.46    ,    194.822    ,    195.183    ,    195.545    ,    195.906    ,    196.268    ,    196.629    ,    196.99    ,    197.351    ,
197.712    ,    198.073    ,    198.433    ,    198.794    ,    199.154    ,    199.514    ,    199.875    ,    200.235    ,    200.595    ,    200.954    ,
201.314    ,    201.674    ,    202.033    ,    202.393    ,    202.752    ,    203.111    ,    203.47    ,    203.829    ,    204.188    ,    204.546    ,
204.905    ,    205.263    ,    205.622    ,    205.98    ,    206.338    ,    206.696    ,    207.054    ,    207.411    ,    207.769    ,    208.127    ,
208.484    ,    208.841    ,    209.198    ,    209.555    ,    209.912    ,    210.269    ,    210.626    ,    210.982    ,    211.339    ,    211.695    ,
212.052    ,    212.408    ,    212.764    ,    213.12    ,    213.475    ,    213.831    ,    214.187    ,    214.542    ,    214.897    ,    215.252    ,
215.608    ,    215.962    ,    216.317    ,    216.672    ,    217.027    ,    217.381    ,    217.736    ,    218.09    ,    218.444    ,    218.798    ,
219.152    ,    219.506    ,    219.86    ,    220.213    ,    220.567    ,    220.92    ,    221.273    ,    221.626    ,    221.979    ,    222.332    ,
222.685    ,    223.038    ,    223.39    ,    223.743    ,    224.095    ,    224.447    ,    224.799    ,    225.151    ,    225.503    ,    225.855    ,
226.206    ,    226.558    ,    226.909    ,    227.26    ,    227.612    ,    227.963    ,    228.314    ,    228.664    ,    229.015    ,    229.366    ,
229.716    ,    230.066    ,    230.417    ,    230.767    ,    231.117    ,    231.467    ,    231.816    ,    232.166    ,    232.516    ,    232.865    ,
233.214    ,    233.564    ,    233.913    ,    234.262    ,    234.61    ,    234.959    ,    235.308    ,    235.656    ,    236.005    ,    236.353    ,
236.701    ,    237.049    ,    237.397    ,    237.745    ,    238.093    ,    238.44    ,    238.788    ,    239.135    ,    239.482    ,    239.829    ,
240.176    ,    240.523    ,    240.87    ,    241.217    ,    241.563    ,    241.91    ,    242.256    ,    242.602    ,    242.948    ,    243.294    ,
243.64    ,    243.986    ,    244.331    ,    244.677    ,    245.022    ,    245.367    ,    245.713    ,    246.058    ,    246.403    ,    246.747    ,
247.092    ,    247.437    ,    247.781    ,    248.125    ,    248.47    ,    248.814    ,    249.158    ,    249.502    ,    249.845    ,    250.189    ,
250.533    ,    250.876    ,    251.219    ,    251.562    ,    251.906    ,    252.248    ,    252.591    ,    252.934    ,    253.277    ,    253.619    ,
253.962    ,    254.304    ,    254.646    ,    254.988    ,    255.33    ,    255.672    ,    256.013    ,    256.355    ,    256.696    ,    257.038    ,
257.379    ,    257.72    ,    258.061    ,    258.402    ,    258.743    ,    259.083    ,    259.424    ,    259.764    ,    260.105    ,    260.445    ,
260.785    ,    261.125    ,    261.465    ,    261.804    ,    262.144    ,    262.483    ,    262.823    ,    263.162    ,    263.501    ,    263.84    ,
264.179    ,    264.518    ,    264.857    ,    265.195    ,    265.534    ,    265.872    ,    266.21    ,    266.548    ,    266.886    ,    267.224    ,
267.562    ,    267.9      ,    268.237    ,    268.574    ,    268.912    ,    269.249    ,    269.586    ,    269.923    ,    270.26    ,    270.597    ,
270.933    ,    271.27    ,    271.606    ,    271.942    ,    272.278    ,    272.614    ,    272.95    ,    273.286    ,    273.622    ,    273.957    ,
274.293    ,    274.628    ,    274.963    ,    275.298    ,    275.633    ,    275.968    ,    276.303    ,    276.638    ,    276.972    ,    277.307    ,
277.641    ,    277.975    ,    278.309    ,    278.643    ,    278.977    ,    279.311    ,    279.644    ,    279.978    ,    280.311    ,    280.644    ,
280.978    ,    281.311    ,    281.643    ,    281.976    ,    282.309    ,    282.641    ,    282.974    ,    283.306    ,    283.638    ,    283.971    ,
284.303    ,    284.634    ,    284.966    ,    285.298    ,    285.629    ,    285.961    ,    286.292    ,    286.623    ,    286.954    ,    287.285    ,
287.616    ,    287.947    ,    288.277    ,    288.608    ,    288.938    ,    289.268    ,    289.599    ,    289.929    ,    290.258    ,    290.588    ,
290.918    ,    291.247    ,    291.577    ,    291.906    ,    292.235    ,    292.565    ,    292.894    ,    293.222    ,    293.551    ,    293.88    ,
294.208    ,    294.537    ,    294.865    ,    295.193    ,    295.521    ,    295.849    ,    296.177    ,    296.505    ,    296.832    ,    297.16    ,
297.487    ,    297.814    ,    298.142    ,    298.469    ,    298.795    ,    299.122    ,    299.449    ,    299.775    ,    300.102    ,    300.428    ,
300.754    ,    301.08    ,    301.406    ,    301.732    ,    302.058    ,    302.384    ,    302.709    ,    303.035    ,    303.36    ,    303.685    ,
304.01    ,    304.335    ,    304.66    ,    304.985    ,    305.309    ,    305.634    ,    305.958    ,    306.282    ,    306.606    ,    306.93    ,
307.254    ,    307.578    ,    307.902    ,    308.225    ,    308.549    ,    308.872    ,    309.195    ,    309.518    ,    309.841    ,    310.164    ,
310.487    ,    310.81    ,    311.132    ,    311.454    ,    311.777    ,    312.099    ,    312.421    ,    312.743    ,    313.065    ,    313.386    ,
313.708    ,    314.029    ,    314.351    ,    314.672    ,    314.993    ,    315.314    ,    315.635    ,    315.956    ,    316.277    ,    316.597    ,
316.918    ,    317.238    ,    317.558    ,    317.878    ,    318.198    ,    318.518    ,    318.838    ,    319.157    ,    319.477    ,    319.796    ,
320.116    ,    320.435    ,    320.754    ,    321.073    ,    321.391    ,    321.71    ,    322.029    ,    322.347    ,    322.666    ,    322.984    ,
323.302    ,    323.62    ,    323.938    ,    324.256    ,    324.573    ,    324.891    ,    325.208    ,    325.526    ,    325.843    ,    326.16    ,
326.477    ,    326.794    ,    327.11    ,    327.427    ,    327.744    ,    328.06    ,    328.376    ,    328.692    ,    329.008    ,    329.324    ,
};
#endif  /* __INDEX_H__ */

(4)、程序运行烧录验证结果

posted @ 2025-10-20 15:37  yjbjingcha  阅读(6)  评论(0)    收藏  举报