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

各位大神求助 !!!!!急急急

[复制链接]
liuxingxyz 提问时间:2019-6-25 18:47 /
阅读主题, 点击返回1楼
收藏 评论17 发布时间:2019-6-25 18:47
17个回答
liuxingxyz 回答时间:2019-6-26 11:27:37
andeyqi 发表于 2019-6-26 11:07
没用过硬件32的硬件iic,一直都用的软件模拟的,IIC为什么还有CS呢,上述的地址3c是7bit的地址还是八位的 ...

8位的,速率100khz,I2C底层是生成的,问一下有没有ST官方STM32F407VG加速度(lis3dsh)例程?
dataozi 回答时间:2019-6-26 11:44:07
有411的 LIS2DH 模拟的IIC 你需要吗?
jeffhe1 回答时间:2019-6-26 11:57:10
cs 應該是 SPI 才有的詞 , I2C 不就 SDA SCL , 要不要先對 EEPROM 讀寫看是否成功 , 再依IC protcol 發 cmd

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

liuxingxyz 回答时间:2019-6-26 12:30:32
安 发表于 2019-6-26 11:03
楼主,最好把你操作的代码发一下,要注意I2C读写的标志位。先是写地址操作,再是读取操作。 ...

u8_t LIS3DH_WriteReg(u8_t WriteAddr, u8_t Data) {
  
    uint8_t tmp[2];
    HAL_StatusTypeDef ret;

    tmp[0] = WriteAddr;
    tmp[1] = Data;
       
    ret = HAL_I2C_Master_Transmit(&hi2c1, LIS3DH_MEMS_I2C_ADDRESS<<1, tmp, sizeof(tmp), LIS3DHTR_COMM_TIMEOUT);
       
    if (HAL_OK != ret){
    //DbgPrintfD("I2C error, %d\r\n", ret, hi2c1.ErrorCode);
    }
   return ret;
}
u8_t LIS3DH_ReadReg(u8_t Reg, u8_t* data) {
  
    HAL_StatusTypeDef ret;
          
    //DbgPrintfD("%d\t%x\r\n", reg, data);
                ret = HAL_I2C_Master_Transmit(&hi2c1, LIS3DH_MEMS_I2C_ADDRESS<<1, &Reg, 1, LIS3DHTR_COMM_TIMEOUT);
    ret = HAL_I2C_Master_Receive(&hi2c1, LIS3DH_MEMS_I2C_ADDRESS<<1, data, 1, LIS3DHTR_COMM_TIMEOUT);
    if (HAL_OK != ret){
    //DbgPrintfD("I2C error, %d %u\r\n", ret, hi2c1.ErrorCode);
    }
   return ret;
}
void Lis3dhtrInit(void)
{
          uint8_t response=0;
                response=LIS3DH_WriteReg(LIS3DH_CTRL_REG1,0x47);     // 启动传感器,使能 X、 Y 和 Z
          ODR = 100 Hz
          DbgPrintfD("设置 ODR:%d\r\n",response);
                response=LIS3DH_SetMode(LIS3DH_NORMAL);              // 设置为正常模式
          DbgPrintfD("设置 MODE:%d\r\n",response);
          LIS3DH_WriteReg(LIS3DH_CTRL_REG2,0x00);     // 高通滤波器已禁用
          LIS3DH_WriteReg(LIS3DH_CTRL_REG3,0x40);     // 中断被驱动到 INT1 焊盘
          LIS3DH_WriteReg(LIS3DH_CTRL_REG4,0x00);     // FS = 2 g
          LIS3DH_WriteReg(LIS3DH_CTRL_REG5,0x08);     // 中断已锁存
          //LIS3DH_WriteReg(LIS3DH_CTRL_REG6,0x08);
          LIS3DH_WriteReg(LIS3DH_INT1_THS,0x16);      // 将自由落体阈值设为 350 mg
          LIS3DH_WriteReg(LIS3DH_INT1_DURATION,0x03); // 设置最短事件持续时间
          LIS3DH_WriteReg(LIS3DH_INT1_CFG,0x95);      // 配置自由落体识别
}
void Lis3dhtrPoll(void)
{
          uint8_t data;
          uint8_t ret,j;
          uint16_t i;
          ret=HAL_GPIO_ReadPin(GPIO_Acc_GPIO_Port, GPIO_Acc_Pin);
          for(i=0;i<5000;i++){}
                LIS3DH_WriteReg(LIS3DH_INT1_CFG,0x95);
       
                //j=LIS3DH_ReadReg(LIS3DH_INT1_SRC,&data);//清除中断请求  
    //j=LIS3DH_ReadReg(LIS3DH_WHO_AM_I,&data);                       
                if(j==1)
                {
                                DbgPrintfD("设备ID:%d\r\n",data);
                }       
                if(ret==0)
                {
                                //LIS3DH_ReadReg(LIS3DH_INT1_SRC,&data);//清除中断请求                 
                }
                else
                {
                    
                }
}
你看下有问题没?
回答时间:2019-6-26 14:05:51
从代码上看没有问题,注意一下硬件地址是不是0x1E?先测试读取一下ID内容。下面是我以前测试的代码:
void MX_DS1308_READ(void)
{
        uint8_t data[8];       
        uint8_t ch;
       
        ch = 0x02;       
        if(HAL_I2C_Master_Transmit(&hi2c1,MX_RTC_ADDR,(uint8_t*)&ch,1,1000) != HAL_OK)
        {
                return;
        }       
        if(HAL_I2C_Master_Receive(&hi2c1,MX_RTC_ADDR,data1,7,1000) != HAL_OK)
        {
                return;
        }
}

liuxingxyz 回答时间:2019-6-26 14:31:56
主要是先发芯片地址,LIS3DH没有回ACK,往下就不能进行了。你用的是什么型号单片机,可否把代码发我参考一下,谢谢。
你若安好_清风徐来 回答时间:2019-6-27 11:01:45
liuxingxyz 发表于 2019-6-26 10:00
用的是硬件I2C,lis3dsh地址是0x3c;cs也拉高,SA0接地;用逻辑分析仪测到的波形,地址也发的对,但是就是 ...

没有  没用过你这个系列
middle1102 回答时间:2019-8-16 11:29:09
很简单,先不用看代码,直接用示波器挂在I2C的两个脚上,看看你发出的器件地址第一个字节对不,如果确认地址是对的,再看第9位从机有没有应答
12

所属标签

相似问题

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