你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32L072 spi 关于LIS3DH 的使用问题

[复制链接]
Mr_Hard_Ball 提问时间:2016-12-14 10:20 /
本帖最后由 Mr_Hard_Ball 于 2016-12-14 10:25 编辑

调试 LIS3DH这个3轴加速度传感器,用spi读取数据。移植官方的驱动,关键要实现 u8_t LIS3DH_ReadReg(u8_t Reg, u8_t* Data);
u8_t LIS3DH_WriteReg(u8_t WriteAddr, u8_t Data);


这两个接口,我的实现如下:
u8_t LIS3DH_ReadReg(u8_t Reg, u8_t* Data) {


        //To be completed with either I2c or SPI reading function
        //i.e. *Data = SPI_Mems_Read_Reg( Reg );  
        HAL_StatusTypeDef ret;
        u8_t read_set;


        read_set = (Reg | 0x80);
        
        /* LOW */
        SPI_CS_RESET();
        ret = HAL_SPI_Transmit(&hspi1, &read_set, sizeof(u8_t), 1000);
        if(ret != HAL_OK)
        {        
                return 0;
        }        
        ret = HAL_SPI_Transmit(&hspi1, 0, sizeof(u8_t), 100);
        
        ret = HAL_SPI_Receive(&hspi1, (u8_t*)Data, sizeof(u8_t), 1000);
        if(ret != HAL_OK)
        {               
                return 0;
        }        
        /* HIGH */
        SPI_CS_SET();
         HAL_Delay(2);
        
        return 1;
}


关键在于,传感器多次中断以后,HAL_SPI_Transmit这个函数就挂掉了,一直返回 HAL_busy,具体一看是 hspi->State 这个状态不对,
打印出来发现状态值不属于这个枚举之一,是一个乱七八糟的值,每次还不一样?
typedef enum
{
  HAL_SPI_STATE_RESET      = 0x00U,  /*!< SPI not yet initialized or disabled                */
  HAL_SPI_STATE_READY      = 0x01U,  /*!< SPI initialized and ready for use                  */
  HAL_SPI_STATE_BUSY       = 0x02U,  /*!< SPI process is ongoing                             */
  HAL_SPI_STATE_BUSY_TX    = 0x12U,  /*!< Data Transmission process is ongoing               */
  HAL_SPI_STATE_BUSY_RX    = 0x22U,  /*!< Data Reception process is ongoing                  */
  HAL_SPI_STATE_BUSY_TX_RX = 0x32U,  /*!< Data Transmission and Reception process is ongoing */
  HAL_SPI_STATE_ERROR      = 0x03U   /*!< SPI error state                                    */
   
}HAL_SPI_StateTypeDef;




关键,HAL-busy 以后就再也不会ready了,因此中断再进来,也无法读取成功。。


求大神解答啊


收藏 1 评论5 发布时间:2016-12-14 10:20

举报

5个回答
cldym 回答时间:2016-12-17 09:43:47
帮顶!~~
wenyangzeng 回答时间:2016-12-17 10:25:29
这个[size=13.3333px]好像是浮点小数,SPI如何传输浮点小数?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

leo121_3006061 回答时间:2016-12-17 11:32:02
不会,绑顶
无薪税绵 回答时间:2016-12-17 13:14:27
没有用过,只能帮顶了。
peter001 回答时间:2016-12-18 13:42:15
帮顶

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版