久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4321|回復: 1
收起左側

max31865溫度傳感器通信驅動代碼

[復制鏈接]
ID:695384 發表于 2020-2-19 22:44 | 顯示全部樓層 |閱讀模式
最近研究maxim max31865溫度傳感器,貼出通信驅動代碼和大牛門一起學習,指點我一二

max31865是專門用來測量電阻類溫度傳感器的,ad分辨率為15位,可以做PT100高精度測量,通信接口為SPI。

通過評估板CN7的PC10,PC11,PC12 (SPI3)連接芯片模塊,PD2做片選。

下面貼上驅動代碼:

1.  //////////////////////////////////////////////////////////////////////////////////                                                                           
2.  //////////////////////////////////////////////////////////////////////////////////         
3.   
4.  SPI_HandleTypeDef SPI3_Handler;
5.   
6.  void SPI3_Init(void)
7.  {
8.      SPI3_Handler.Instance=SPI3;                         //SP3
9.      SPI3_Handler.Init.Mode=SPI_MODE_MASTER;             //設置SPI工作模式,設置為主模式
10.    SPI3_Handler.Init.Direction=SPI_DIRECTION_2LINES;   //設置SPI單向或者雙向的數據模式:SPI設置為雙線模式
11.    SPI3_Handler.Init.DataSize=SPI_DATASIZE_8BIT;       //設置SPI的數據大小:SPI發送接收8位幀結構
12.    SPI3_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH;    //串行同步時鐘的空閑狀態為高電平
13.    SPI3_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;         //串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣
14.    SPI3_Handler.Init.NSS=SPI_NSS_SOFT;                 //NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內部NSS信號有SSI位控制
15.    SPI3_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;//定義波特率預分頻的值:波特率預分頻值為256
16.    SPI3_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;        //指定數據傳輸從MSB位還是LSB位開始:數據傳輸從MSB位開始
17.    SPI3_Handler.Init.TIMode=SPI_TIMODE_DISABLE;        //關閉TI模式
18.    SPI3_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//關閉硬件CRC校驗
19.    SPI3_Handler.Init.CRCPolynomial=7;                  //CRC值計算的多項式
20.    HAL_SPI_Init(&SPI3_Handler);//初始化
21.   
22.    __HAL_SPI_ENABLE(&SPI3_Handler);                    //使能SPI3
23.        
24.    SPI3_ReadWriteByte(0Xff);                           //啟動傳輸
25.}
26.
27.void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
28.{
29.    GPIO_InitTypeDef GPIO_InitStruct;
30.    /* USER CODE BEGIN SPI3_MspInit 0 */
31.
32.    /* USER CODE END SPI3_MspInit 0 */
33.    /* Peripheral clock enable */
34.    __HAL_RCC_SPI3_CLK_ENABLE();
35.  
36.    /**SPI3 GPIO Configuration   
37.    PC10     ------> SPI3_SCK
38.    PC11     ------> SPI3_MISO
39.    PC12     ------> SPI3_MOSI
40.    */
41.    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
42.    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
43.    GPIO_InitStruct.Pull = GPIO_NOPULL;
44.    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
45.    GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
46.    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
47.}
48.
49.void SPI3_SetSpeed(u8 SPI_BaudRatePrescaler)
50.{
51.    assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//判斷有效性
52.    __HAL_SPI_DISABLE(&SPI3_Handler);            //關閉SPI
53.    SPI3_Handler.Instance->CR1&=0XFFC7;          //位3-5清零,用來設置波特率
54.    SPI3_Handler.Instance->CR1|=SPI_BaudRatePrescaler;//設置SPI速度
55.    __HAL_SPI_ENABLE(&SPI3_Handler);             //使能SPI
56.   
57.}
58.
59.u8 SPI3_ReadWriteByte(u8 TxData)
60.{
61.    u8 Rxdata;
62.    HAL_SPI_TransmitReceive(&SPI3_Handler,&TxData,&Rxdata,1, 1000);      
63.        return Rxdata;                              //返回收到的數據               
64.}
65.
66.
67.#define MAX31865_CFG               0x00
68.#define MAX31865_RTD_MSB           0x01
69.#define MAX31865_RTD_LSB           0x02
70.#define MAX31865_HIGH_MSB          0x03
71.#define MAX31865_HIGH_LSB          0x04
72.#define MAX31865_LOW_MSB           0x05
73.#define MAX31865_LOW_LSB           0x06
74.#define MAX31865_FAULT             0x07
75.
76.//////////////////////////////////////////////////////////////////////////////////         
77.// 模塊特征
78.// 連續轉換大約每次轉換大約21ms
79.// 單次轉換每次大約52ms(60HZ濾波) 62ms(50HZ濾波)
80.//////////////////////////////////////////////////////////////////////////////////         
81.
82.#define SpiRw(x)       SPI3_ReadWriteByte(x)   
83.
84.#define max31865_enable()       PT_SS=0
85.#define max31865_disable()      PT_SS=1
86.
87./*****************************************************************************//*!
88.* @brief           max38165 data read.
89.*               
90.* @param   none
91.*
92.* @return  none
93.*
94.* @ Pass/ Fail criteria: none
95.*****************************************************************************/
96.uint8_t max31865_read(uint8_t addr){
97.   
98.    uint8_t Src[2];
99.    uint8_t Des[2];
100.      
101.      max31865_disable();
102.      NOP20();
103.      max31865_enable();
104.      NOP20();
105.      
106.      Src[0] = addr;
107.      Src[1] = 0xFF;
108.      
109.      Des[0] = SpiRw(Src[0]);
110.      Des[1] = SpiRw(Src[1]);
111.      
112.      max31865_disable();
113.      
114.      return Des[1];
115.  }
116.   
117.   
118.  /*****************************************************************************//*!
119.  * @brief           max38165 data wrire.
120.  *               
121.  * @param   none
122.  *
123.  * @return  none
124.  *
125.  * @ Pass/ Fail criteria: none
126.  *****************************************************************************/
127.  uint8_t max31865_write(uint8_t addr, uint8_t data){
128.      uint8_t Src[2];
129.      uint8_t Des[2];
130.      
131.      max31865_disable();
132.      NOP20();
133.      max31865_enable();
134.      NOP20();
135.      
136.      Src[0] = addr;
137.      Src[1] = data;
138.      
139.      Des[0] = SpiRw(Src[0]);
140.      Des[1] = SpiRw(Src[1]);
141.      
142.      max31865_disable();
143.      
144.      return Des[1];
145.  }
146.   
147.  /*****************************************************************************//*!
148.  * @brief           max38165 config.
149.  *               
150.  * @param   none
151.  *
152.  * @return  none
153.  *
154.  * @ Pass/ Fail criteria: none
155.  *****************************************************************************/
156.  uint8_t max31865_Cfg(uint8_t cfg){
157.      uint8_t cfgR;
158.      
159.      for(uint8_t faultCnt = 0;faultCnt<3;faultCnt++){
160.          max31865_write(MAX31865_CFG|0x80, cfg); //寫入配置
161.          cfgR = max31865_read(MAX31865_CFG);     //讀回配置
162.          if((cfgR & 0xDD) == (cfg & 0xDD)){
163.              cfgR &= 0xDD;
164.              break;
165.          }
166.      }
167.      return cfgR;
168.  }
169.   
170.  /*****************************************************************************//*!
171.  * @brief           max38165 rdt read.
172.  *               
173.  * @param   none
174.  *
175.  * @return  none
176.  *
177.  * @ Pass/ Fail criteria: none
178.  *****************************************************************************/
179.  uint16_t max31865_rtd_read(void){
180.      uint16_t res;
181.      
182.      res = max31865_read(MAX31865_RTD_LSB);
183.      res<<=8;
184.      res |= max31865_read(MAX31865_RTD_MSB);
185.      
186.      return (res>>1);
187.  }
188.   
189.  /*****************************************************************************//*!
190.  * @brief           max38165 high val set.
191.  *               
192.  * @param   none
193.  *
194.  * @return  none
195.  *
196.  * @ Pass/ Fail criteria: none
197.  *****************************************************************************/
198.  uint16_t max31865_high_set(uint16_t val){
199.      uint8_t dr,dw;
200.      uint16_t fault;
201.      
202.      fault = val;
203.      
204.      dw = val & 0xFF;
205.      for(uint8_t faultCnt = 0;faultCnt<5;faultCnt++){
206.          max31865_write(MAX31865_HIGH_LSB|0x80, dw);  //寫入配置

回復

使用道具 舉報

ID:756925 發表于 2021-5-17 13:21 | 顯示全部樓層
代碼不全阿.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产综合精品一区二区三区 | 午夜免费在线电影 | 一级国产精品一级国产精品片 | 久久一区二区三区四区五区 | 亚洲精品一区二区网址 | 视频第一区 | 三a毛片 | 国产精品三级 | 成人性生交大片免费看中文带字幕 | 国产日韩精品一区 | 日韩在线播放网址 | 久久久久久亚洲精品不卡 | 每日在线更新av | 99久久婷婷国产综合精品电影 | 日韩电影中文字幕在线观看 | 日韩在线免费播放 | 一级片免费视频 | 成人免费在线小视频 | 成人在线精品视频 | 亚洲免费在线视频 | 国产免费色| 亚洲高清在线 | 国产成人免费视频网站高清观看视频 | 91精品国产综合久久久久 | 黄色一级网 | 亚洲一区二区三区免费观看 | 99视频在线 | 九九久久精品 | 久久综合久久综合久久 | 午夜视频一区二区 | 日韩视频在线免费观看 | 免费在线日韩 | 国产精品成人一区 | 在线观看av网站永久 | 99免费精品视频 | 欧区一欧区二欧区三免费 | 欧美性tv | 欧美美女爱爱 | 久久夜色精品国产 | 国产一级毛片精品完整视频版 | 伊人久久国产 |