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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版