找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3599|回复: 3
打印 上一主题 下一主题
收起左侧

LIS2DW12驱动stm32源码

[复制链接]
跳转到指定楼层
楼主
ID:315236 发表于 2018-4-24 12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT。。。。。

单片机源程序如下:
  1. /******************** (C) COPYRIGHT 2016 STMicroelectronics ********************
  2. * File Name          : LIS2DW12_ACC_driver.c
  3. * Author             : MEMS Application Team
  4. * Version            : v1.1
  5. * Date               : 11 May 2017
  6. * Description        : EKSTM32 main file
  7. *
  8. ********************************************************************************
  9. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  10. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  11. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  12. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  13. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  14. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  15. *
  16. * THIS SOFTWARE IS SPECIFICALLY DESIGNED FOR EXCLUSIVE USE WITH ST PARTS.
  17. *******************************************************************************/

  18. /* Includes ------------------------------------------------------------------*/
  19. #include "LIS2DW12_ACC_driver.h"
  20. #include "spi.h"

  21. /* Private typedef -----------------------------------------------------------*/

  22. /* Private define ------------------------------------------------------------*/

  23. /* Private macro -------------------------------------------------------------*/

  24. /* Private variables ---------------------------------------------------------*/

  25. /* Private functions ---------------------------------------------------------*/

  26. /************** Generic Function  *******************/

  27. /*******************************************************************************
  28.   * Function Name    : LIS2DW12_ACC_WriteReg
  29.   * Description    : Generic Writing function. It must be fullfilled with either
  30.   *          : I2C or SPI writing function
  31.   * Input        : Register Address, ptr to buffer to be written,
  32.   *                                 length of buffer
  33.   * Output      : None
  34.   * Return      : None
  35. *******************************************************************************/
  36. status_t LIS2DW12_ACC_WriteReg(void *handle, u8_t Reg, u8_t *Bufp, u16_t len)
  37. {
  38.   /* Example
  39.     HAL_GPIO_WritePin(CS_DEV_GPIO_Port, CS_DEV_Pin, GPIO_PIN_RESET);  
  40.     HAL_SPI_Transmit(&hspi2, &Reg, 1, 1000);
  41.     HAL_SPI_Transmit(&hspi2, Bufp, len, 1000);
  42.     HAL_GPIO_WritePin(CS_DEV_GPIO_Port, CS_DEV_Pin, GPIO_PIN_SET);   
  43.   */
  44.   return MEMS_SUCCESS;
  45. }

  46. /*******************************************************************************
  47.   * Function Name    : LIS2DW12_ACC_ReadReg
  48.   * Description    : Generic Reading function. It must be fullfilled with either
  49.   *          : I2C or SPI writing function
  50.   * Input        : Register Address, ptr to buffer to be read,
  51.   *                                 length of buffer
  52.   * Output      : None
  53.   * Return      : None
  54. *******************************************************************************/
  55. status_t LIS2DW12_ACC_ReadReg(void *handle, u8_t Reg, u8_t *Bufp, u16_t len)
  56. {
  57.   /* Example
  58.     HAL_GPIO_WritePin(CS_DEV_GPIO_Port, CS_DEV_Pin, GPIO_PIN_RESET);
  59.     uint8_t dummy = Reg|0x80;
  60.     HAL_SPI_Transmit(&hspi2, &dummy, 1, 1000);   
  61.     HAL_SPI_Receive(&hspi2, Bufp, len, 1000);
  62.     HAL_GPIO_WritePin(CS_DEV_GPIO_Port, CS_DEV_Pin, GPIO_PIN_SET);
  63.   */
  64.   return MEMS_SUCCESS;
  65. }

  66. /**************** Base Function  *******************/

  67. /*******************************************************************************
  68.   * Function Name  : LIS2DW12_ACC_R_WhoAmI
  69.   * Description    : Read WHO_AM_I_BIT
  70.   * Input          : Pointer to u8_t
  71.   * Output         : Status of WHO_AM_I_BIT
  72.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  73. *******************************************************************************/
  74. status_t LIS2DW12_ACC_R_WhoAmI(void *handle, u8_t *value)
  75. {
  76.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_WHO_AM_I_REG, (u8_t *)value , 1) )
  77.     return MEMS_ERROR;
  78.   
  79.   *value &= LIS2DW12_ACC_WHO_AM_I_BIT_MASK; //coerce  
  80.   *value = *value >> LIS2DW12_ACC_WHO_AM_I_BIT_POSITION; //mask  
  81.   
  82.     return MEMS_SUCCESS;
  83. }

  84. /*******************************************************************************
  85.   * Function Name  : LIS2DW12_ACC_W_OutputDataRate
  86.   * Description    : Write ODR
  87.   * Input          : LIS2DW12_ACC_ODR_t
  88.   * Output         : None
  89.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  90. *******************************************************************************/
  91. status_t  LIS2DW12_ACC_W_OutputDataRate(void *handle, LIS2DW12_ACC_ODR_t newValue)
  92. {
  93.   u8_t value;
  94.   
  95.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  96.     return MEMS_ERROR;
  97.   
  98.   value &= ~LIS2DW12_ACC_ODR_MASK;
  99.   value |= newValue;
  100.   
  101.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  102.     return MEMS_ERROR;
  103.   
  104.   return MEMS_SUCCESS;
  105. }

  106. /*******************************************************************************
  107.   * Function Name  : LIS2DW12_ACC_R_OutputDataRate
  108.   * Description    : Read ODR
  109.   * Input          : Pointer to LIS2DW12_ACC_ODR_t
  110.   * Output         : Status of ODR see LIS2DW12_ACC_ODR_t
  111.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  112. *******************************************************************************/
  113. status_t LIS2DW12_ACC_R_OutputDataRate(void *handle, LIS2DW12_ACC_ODR_t *value)
  114. {
  115.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, (u8_t *)value , 1) )
  116.     return MEMS_ERROR;
  117.   
  118.   *value &= LIS2DW12_ACC_ODR_MASK; //mask
  119.   
  120.   return MEMS_SUCCESS;
  121. }

  122. /*******************************************************************************
  123.   * Function Name  : LIS2DW12_ACC_W_FullScaleSelection
  124.   * Description    : Write FS
  125.   * Input          : LIS2DW12_ACC_FS_t
  126.   * Output         : None
  127.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  128. *******************************************************************************/
  129. status_t  LIS2DW12_ACC_W_FullScaleSelection(void *handle, LIS2DW12_ACC_FS_t newValue)
  130. {
  131.   u8_t value;
  132.   
  133.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL6, &value, 1) )
  134.     return MEMS_ERROR;
  135.   
  136.   value &= ~LIS2DW12_ACC_FS_MASK;
  137.   value |= newValue;
  138.   
  139.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL6, &value, 1) )
  140.     return MEMS_ERROR;
  141.   
  142.   return MEMS_SUCCESS;
  143. }

  144. /*******************************************************************************
  145.   * Function Name  : LIS2DW12_ACC_R_FullScaleSelection
  146.   * Description    : Read FS
  147.   * Input          : Pointer to LIS2DW12_ACC_FS_t
  148.   * Output         : Status of FS see LIS2DW12_ACC_FS_t
  149.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  150. *******************************************************************************/
  151. status_t LIS2DW12_ACC_R_FullScaleSelection(void *handle, LIS2DW12_ACC_FS_t *value)
  152. {
  153.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL6, (u8_t *)value , 1) )
  154.     return MEMS_ERROR;
  155.   
  156.   *value &= LIS2DW12_ACC_FS_MASK; //mask
  157.   
  158.   return MEMS_SUCCESS;
  159. }

  160. /*******************************************************************************
  161.   * Function Name  : LIS2DW12_ACC_W_BlockDataUpdate
  162.   * Description    : Write BDU
  163.   * Input          : LIS2DW12_ACC_BDU_t
  164.   * Output         : None
  165.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  166. *******************************************************************************/
  167. status_t  LIS2DW12_ACC_W_BlockDataUpdate(void *handle, LIS2DW12_ACC_BDU_t newValue)
  168. {
  169.   u8_t value;
  170.   
  171.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  172.     return MEMS_ERROR;
  173.   
  174.   value &= ~LIS2DW12_ACC_BDU_MASK;
  175.   value |= newValue;
  176.   
  177.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  178.     return MEMS_ERROR;
  179.   
  180.   return MEMS_SUCCESS;
  181. }

  182. /*******************************************************************************
  183.   * Function Name  : LIS2DW12_ACC_R_BlockDataUpdate
  184.   * Description    : Read BDU
  185.   * Input          : Pointer to LIS2DW12_ACC_BDU_t
  186.   * Output         : Status of BDU see LIS2DW12_ACC_BDU_t
  187.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  188. *******************************************************************************/
  189. status_t LIS2DW12_ACC_R_BlockDataUpdate(void *handle, LIS2DW12_ACC_BDU_t *value)
  190. {
  191.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  192.     return MEMS_ERROR;
  193.   
  194.   *value &= LIS2DW12_ACC_BDU_MASK; //mask
  195.   
  196.   return MEMS_SUCCESS;
  197. }

  198. /*******************************************************************************
  199.   * Function Name  : status_t LIS2DW12_ACC_Get_Acceleration(u8_t *buff)
  200.   * Description    : Read Acceleration output register
  201.   * Input          : pointer to [u8_t]
  202.   * Output         : Acceleration buffer u8_t
  203.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  204. *******************************************************************************/
  205. status_t LIS2DW12_ACC_Get_Acceleration(void *handle, u8_t *buff)
  206. {
  207.   u8_t i, j, k;
  208.   u8_t numberOfByteForDimension;
  209.   
  210.   numberOfByteForDimension=6/3;
  211.   
  212.   k=0;
  213.   for (i=0; i<3;i++ )
  214.   {
  215.     for (j=0; j<numberOfByteForDimension;j++ )
  216.     {  
  217.       if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_OUT_X_L+k, &buff[k], 1))
  218.         return MEMS_ERROR;
  219.       k++;  
  220.     }
  221.   }
  222.   
  223.   return MEMS_SUCCESS;
  224. }

  225. /*******************************************************************************
  226.   * Function Name  : status_t LIS2DW12_ACC_Get_Temperature(u8_t *buff)
  227.   * Description    : Read Temperature output register
  228.   * Input          : pointer to [u8_t]
  229.   * Output         : Temperature buffer u8_t
  230.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  231. *******************************************************************************/
  232. status_t LIS2DW12_ACC_Get_Temperature(void *handle, u8_t *buff)
  233. {
  234.   u8_t i, j, k;
  235.   u8_t numberOfByteForDimension;
  236.   
  237.   numberOfByteForDimension=2/1;
  238.   
  239.   k=0;
  240.   for (i=0; i<1;i++ )
  241.   {
  242.     for (j=0; j<numberOfByteForDimension;j++ )
  243.     {  
  244.       if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_OUT_T_L+k, &buff[k], 1))
  245.         return MEMS_ERROR;
  246.       k++;  
  247.     }
  248.   }
  249.   
  250.   return MEMS_SUCCESS;
  251. }

  252. /**************** Advanced Function  *******************/

  253. /*******************************************************************************
  254.   * Function Name  : LIS2DW12_ACC_W_LowPowerModeSelection
  255.   * Description    : Write LP_MODE
  256.   * Input          : LIS2DW12_ACC_LP_MODE_t
  257.   * Output         : None
  258.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  259. *******************************************************************************/
  260. status_t  LIS2DW12_ACC_W_LowPowerModeSelection(void *handle, LIS2DW12_ACC_LP_MODE_t newValue)
  261. {
  262.   u8_t value;
  263.   
  264.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  265.     return MEMS_ERROR;
  266.   
  267.   value &= ~LIS2DW12_ACC_LP_MODE_MASK;
  268.   value |= newValue;
  269.   
  270.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  271.     return MEMS_ERROR;
  272.   
  273.   return MEMS_SUCCESS;
  274. }

  275. /*******************************************************************************
  276.   * Function Name  : LIS2DW12_ACC_R_LowPowerModeSelection
  277.   * Description    : Read LP_MODE
  278.   * Input          : Pointer to LIS2DW12_ACC_LP_MODE_t
  279.   * Output         : Status of LP_MODE see LIS2DW12_ACC_LP_MODE_t
  280.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  281. *******************************************************************************/
  282. status_t LIS2DW12_ACC_R_LowPowerModeSelection(void *handle, LIS2DW12_ACC_LP_MODE_t *value)
  283. {
  284.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, (u8_t *)value , 1) )
  285.     return MEMS_ERROR;
  286.   
  287.   *value &= LIS2DW12_ACC_LP_MODE_MASK; //mask
  288.   
  289.   return MEMS_SUCCESS;
  290. }

  291. /*******************************************************************************
  292.   * Function Name  : LIS2DW12_ACC_W_ModeSelection
  293.   * Description    : Write MODE
  294.   * Input          : LIS2DW12_ACC_MODE_t
  295.   * Output         : None
  296.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  297. *******************************************************************************/
  298. status_t  LIS2DW12_ACC_W_ModeSelection(void *handle, LIS2DW12_ACC_MODE_t newValue)
  299. {
  300.   u8_t value;
  301.   
  302.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  303.     return MEMS_ERROR;
  304.   
  305.   value &= ~LIS2DW12_ACC_MODE_MASK;
  306.   value |= newValue;
  307.   
  308.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL1, &value, 1) )
  309.     return MEMS_ERROR;
  310.   
  311.   return MEMS_SUCCESS;
  312. }

  313. /*******************************************************************************
  314.   * Function Name  : LIS2DW12_ACC_R_ModeSelection
  315.   * Description    : Read MODE
  316.   * Input          : Pointer to LIS2DW12_ACC_MODE_t
  317.   * Output         : Status of MODE see LIS2DW12_ACC_MODE_t
  318.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  319. *******************************************************************************/
  320. status_t LIS2DW12_ACC_R_ModeSelection(void *handle, LIS2DW12_ACC_MODE_t *value)
  321. {
  322.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL1, (u8_t *)value , 1) )
  323.     return MEMS_ERROR;
  324.   
  325.   *value &= LIS2DW12_ACC_MODE_MASK; //mask
  326.   
  327.   return MEMS_SUCCESS;
  328. }

  329. /*******************************************************************************
  330.   * Function Name  : LIS2DW12_ACC_W_SPI_mode_selection
  331.   * Description    : Write SIM
  332.   * Input          : LIS2DW12_ACC_SIM_t
  333.   * Output         : None
  334.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  335. *******************************************************************************/
  336. status_t  LIS2DW12_ACC_W_SPI_mode_selection(void *handle, LIS2DW12_ACC_SIM_t newValue)
  337. {
  338.   u8_t value;
  339.   
  340.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  341.     return MEMS_ERROR;
  342.   
  343.   value &= ~LIS2DW12_ACC_SIM_MASK;
  344.   value |= newValue;
  345.   
  346.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  347.     return MEMS_ERROR;
  348.   
  349.   return MEMS_SUCCESS;
  350. }

  351. /*******************************************************************************
  352.   * Function Name  : LIS2DW12_ACC_R_SPI_mode_selection
  353.   * Description    : Read SIM
  354.   * Input          : Pointer to LIS2DW12_ACC_SIM_t
  355.   * Output         : Status of SIM see LIS2DW12_ACC_SIM_t
  356.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  357. *******************************************************************************/
  358. status_t LIS2DW12_ACC_R_SPI_mode_selection(void *handle, LIS2DW12_ACC_SIM_t *value)
  359. {
  360.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  361.     return MEMS_ERROR;
  362.   
  363.   *value &= LIS2DW12_ACC_SIM_MASK; //mask
  364.   
  365.   return MEMS_SUCCESS;
  366. }

  367. /*******************************************************************************
  368.   * Function Name  : LIS2DW12_ACC_W_I2C_status
  369.   * Description    : Write I2C_DISABLE
  370.   * Input          : LIS2DW12_ACC_I2C_DISABLE_t
  371.   * Output         : None
  372.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  373. *******************************************************************************/
  374. status_t  LIS2DW12_ACC_W_I2C_status(void *handle, LIS2DW12_ACC_I2C_DISABLE_t newValue)
  375. {
  376.   u8_t value;
  377.   
  378.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  379.     return MEMS_ERROR;
  380.   
  381.   value &= ~LIS2DW12_ACC_I2C_DISABLE_MASK;
  382.   value |= newValue;
  383.   
  384.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  385.     return MEMS_ERROR;
  386.   
  387.   return MEMS_SUCCESS;
  388. }

  389. /*******************************************************************************
  390.   * Function Name  : LIS2DW12_ACC_R_I2C_status
  391.   * Description    : Read I2C_DISABLE
  392.   * Input          : Pointer to LIS2DW12_ACC_I2C_DISABLE_t
  393.   * Output         : Status of I2C_DISABLE see LIS2DW12_ACC_I2C_DISABLE_t
  394.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  395. *******************************************************************************/
  396. status_t LIS2DW12_ACC_R_I2C_status(void *handle, LIS2DW12_ACC_I2C_DISABLE_t *value)
  397. {
  398.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  399.     return MEMS_ERROR;
  400.   
  401.   *value &= LIS2DW12_ACC_I2C_DISABLE_MASK; //mask
  402.   
  403.   return MEMS_SUCCESS;
  404. }

  405. /*******************************************************************************
  406.   * Function Name  : LIS2DW12_ACC_W_AutoIncrementedWithMultipleAccess
  407.   * Description    : Write IF_ADD_INC
  408.   * Input          : LIS2DW12_ACC_IF_ADD_INC_t
  409.   * Output         : None
  410.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  411. *******************************************************************************/
  412. status_t  LIS2DW12_ACC_W_AutoIncrementedWithMultipleAccess(void *handle, LIS2DW12_ACC_IF_ADD_INC_t newValue)
  413. {
  414.   u8_t value;
  415.   
  416.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  417.     return MEMS_ERROR;
  418.   
  419.   value &= ~LIS2DW12_ACC_IF_ADD_INC_MASK;
  420.   value |= newValue;
  421.   
  422.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  423.     return MEMS_ERROR;
  424.   
  425.   return MEMS_SUCCESS;
  426. }

  427. /*******************************************************************************
  428.   * Function Name  : LIS2DW12_ACC_R_AutoIncrementedWithMultipleAccess
  429.   * Description    : Read IF_ADD_INC
  430.   * Input          : Pointer to LIS2DW12_ACC_IF_ADD_INC_t
  431.   * Output         : Status of IF_ADD_INC see LIS2DW12_ACC_IF_ADD_INC_t
  432.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  433. *******************************************************************************/
  434. status_t LIS2DW12_ACC_R_AutoIncrementedWithMultipleAccess(void *handle, LIS2DW12_ACC_IF_ADD_INC_t *value)
  435. {
  436.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  437.     return MEMS_ERROR;
  438.   
  439.   *value &= LIS2DW12_ACC_IF_ADD_INC_MASK; //mask
  440.   
  441.   return MEMS_SUCCESS;
  442. }

  443. /*******************************************************************************
  444.   * Function Name  : LIS2DW12_ACC_W_SoftReset
  445.   * Description    : Write SOFT_RESET
  446.   * Input          : LIS2DW12_ACC_SOFT_RESET_t
  447.   * Output         : None
  448.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  449. *******************************************************************************/
  450. status_t  LIS2DW12_ACC_W_SoftReset(void *handle, LIS2DW12_ACC_SOFT_RESET_t newValue)
  451. {
  452.   u8_t value;
  453.   
  454.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  455.     return MEMS_ERROR;
  456.   
  457.   value &= ~LIS2DW12_ACC_SOFT_RESET_MASK;
  458.   value |= newValue;
  459.   
  460.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  461.     return MEMS_ERROR;
  462.   
  463.   return MEMS_SUCCESS;
  464. }

  465. /*******************************************************************************
  466.   * Function Name  : LIS2DW12_ACC_R_SoftReset
  467.   * Description    : Read SOFT_RESET
  468.   * Input          : Pointer to LIS2DW12_ACC_SOFT_RESET_t
  469.   * Output         : Status of SOFT_RESET see LIS2DW12_ACC_SOFT_RESET_t
  470.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  471. *******************************************************************************/
  472. status_t LIS2DW12_ACC_R_SoftReset(void *handle, LIS2DW12_ACC_SOFT_RESET_t *value)
  473. {
  474.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  475.     return MEMS_ERROR;
  476.   
  477.   *value &= LIS2DW12_ACC_SOFT_RESET_MASK; //mask
  478.   
  479.   return MEMS_SUCCESS;
  480. }

  481. /*******************************************************************************
  482.   * Function Name  : LIS2DW12_ACC_W_Reboot
  483.   * Description    : Write BOOT
  484.   * Input          : LIS2DW12_ACC_BOOT_t
  485.   * Output         : None
  486.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  487. *******************************************************************************/
  488. status_t  LIS2DW12_ACC_W_Reboot(void *handle, LIS2DW12_ACC_BOOT_t newValue)
  489. {
  490.   u8_t value;
  491.   
  492.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  493.     return MEMS_ERROR;
  494.   
  495.   value &= ~LIS2DW12_ACC_BOOT_MASK;
  496.   value |= newValue;
  497.   
  498.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL2, &value, 1) )
  499.     return MEMS_ERROR;
  500.   
  501.   return MEMS_SUCCESS;
  502. }

  503. /*******************************************************************************
  504.   * Function Name  : LIS2DW12_ACC_R_Reboot
  505.   * Description    : Read BOOT
  506.   * Input          : Pointer to LIS2DW12_ACC_BOOT_t
  507.   * Output         : Status of BOOT see LIS2DW12_ACC_BOOT_t
  508.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  509. *******************************************************************************/
  510. status_t LIS2DW12_ACC_R_Reboot(void *handle, LIS2DW12_ACC_BOOT_t *value)
  511. {
  512.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL2, (u8_t *)value , 1) )
  513.     return MEMS_ERROR;
  514.   
  515.   *value &= LIS2DW12_ACC_BOOT_MASK; //mask
  516.   
  517.   return MEMS_SUCCESS;
  518. }

  519. /*******************************************************************************
  520.   * Function Name  : LIS2DW12_ACC_W_SingleLowPowerMode
  521.   * Description    : Write SLP_MODE_1
  522.   * Input          : LIS2DW12_ACC_SLP_MODE_1_t
  523.   * Output         : None
  524.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  525. *******************************************************************************/
  526. status_t  LIS2DW12_ACC_W_SingleLowPowerMode(void *handle, LIS2DW12_ACC_SLP_MODE_1_t newValue)
  527. {
  528.   u8_t value;
  529.   
  530.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL3, &value, 1) )
  531.     return MEMS_ERROR;
  532.   
  533.   value &= ~LIS2DW12_ACC_SLP_MODE_1_MASK;
  534.   value |= newValue;
  535.   
  536.   if( !LIS2DW12_ACC_WriteReg(handle, LIS2DW12_ACC_CTRL3, &value, 1) )
  537.     return MEMS_ERROR;
  538.   
  539.   return MEMS_SUCCESS;
  540. }

  541. /*******************************************************************************
  542.   * Function Name  : LIS2DW12_ACC_R_SingleLowPowerMode
  543.   * Description    : Read SLP_MODE_1
  544.   * Input          : Pointer to LIS2DW12_ACC_SLP_MODE_1_t
  545.   * Output         : Status of SLP_MODE_1 see LIS2DW12_ACC_SLP_MODE_1_t
  546.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  547. *******************************************************************************/
  548. status_t LIS2DW12_ACC_R_SingleLowPowerMode(void *handle, LIS2DW12_ACC_SLP_MODE_1_t *value)
  549. {
  550.   if( !LIS2DW12_ACC_ReadReg(handle, LIS2DW12_ACC_CTRL3, (u8_t *)value , 1) )
  551.     return MEMS_ERROR;
  552.   
  553.   *value &= LIS2DW12_ACC_SLP_MODE_1_MASK; //mask
  554.   
  555.   return MEMS_SUCCESS;
  556. }

  557. /*******************************************************************************
  558.   * Function Name  : LIS2DW12_ACC_W_SingleLowPowerModeSource
  559.   * Description    : Write SLP_MODE_SEL
  560.   * Input          : LIS2DW12_ACC_SLP_MODE_SEL_t
  561.   * Output         : None
  562.   * Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
  563. *******************************************************************************/
  564. status_t  LIS2DW12_ACC_W_SingleLowPowerModeSource(void *handle, LIS2DW12_ACC_SLP_MODE_SEL_t newValue)
  565. {
  566.   u8_t value;
  567. ……………………

  568. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LIS2DW12_ver1.1.zip (21.41 KB, 下载次数: 104)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:359831 发表于 2018-6-27 00:02 | 只看该作者
请问有没有spi的程序
回复

使用道具 举报

板凳
ID:20672 发表于 2019-2-14 13:43 | 只看该作者
谢谢分享~~~~
回复

使用道具 举报

地板
ID:500218 发表于 2019-8-25 12:44 | 只看该作者
谢谢分享~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表