完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我面临着在INT1上获得数据就绪中断的问题。
使用I2C通信。 试图让fifo工作并坚持下去,所以从数据就绪开始。 根据应用说明: 1写入CTRL9_XL = 38h //启用Acc X,Y,Z轴 2写CTRL1_XL = 60h // Acc = 416Hz(高性能模式) 3写入INT1_CTRL = 01h // INT1上的Acc数据就绪中断初始化3个寄存器,并尝试根据应用笔记中的第4.2章从INT1读取中断数据。 如果我在中断中读取STATUS_REG,那么我在繁忙状态下卡在HAL_I2C_Mem_Read函数内。 如果我在我的主要读取它(1)然后它开始工作,但以一种奇怪的方式产生中断(图片附加。) 我读: 1阅读状态 2如果XLDA = 0,则转到1 3读取OUTX_L_XL 4读取OUTX_H_XL 5阅读OUTY_L_XL 6阅读OUTY_H_XL 7阅读OUTZ_L_XL 8在我的中断中读取OUTZ_H_XLI切换输出引脚。 当我读 STATUS_REG我看到第一位是1,这意味着acc数据准备就绪。 但无论何时我读它总是1.我在读取它时读取它并且它是1.我从OUTX_L_XL读出后再次读取它, OUTX_H_XL, OUTY_L_XL, OUTY_H_XL, OUTZ_L_XL, OUTZ_H_XL它仍然是一个。我从输出寄存器读取的数据始终为0。 我将我的acc改为104赫兹。相同的图片。 如果我不读,我不会看到任何中断。 所以第一个问题是读取中断回调内的数据。 (但我可以在主要内容中阅读)。陷入I2C,我无法解释当我试图在内部或外部读取i2C时有什么区别。 第二个原因是中断在不同的时间进入,数据总是为0。 ps:如果我的INT_1 = 0,我可以从acc检索数据,并且我从OUTX_L_XL读取。 #lsm6ds3 ## lsm6ds3-#fifo#lsm6ds3-interrupt 以上来自于谷歌翻译 以下为原文 Hi, I`m facing a problem to get data ready interrupt on INT1. Use I2C communication. Trying to make fifo work and stuck with that, so started from data ready. According to Application notes : 1 Write CTRL9_XL = 38h // Acc X, Y, Z axes enabled 2 Write CTRL1_XL = 60h // Acc = 416Hz (High-Performance mode) 3 Write INT1_CTRL = 01h // Acc Data Ready interrupt on INT1Initialize 3 registers and try to read data in interrupt from INT1 according to chapter 4.2 in application notes. If i read STATUS_REG in interrupt then i stuck inside HAL_I2C_Mem_Read function in busy state. If I read it in my main while(1) then it start working, but interrupt generated in a strange way (picture attached.) I read: 1 Read STATUS 2 If XLDA = 0, then go to 1 3 Read OUTX_L_XL 4 Read OUTX_H_XL 5 Read OUTY_L_XL 6 Read OUTY_H_XL 7 Read OUTZ_L_XL 8 Read OUTZ_H_XLI toggle output pin in my interrupt. When i read STATUS_REG i see that the first bit is 1, which mean acc data is ready. But no matter when i read it it is always 1. I read it when interrupt take a place and it is 1. I read it again after reading out from OUTX_L_XL, OUTX_H_XL, OUTY_L_XL, OUTY_H_XL, OUTZ_L_XL, OUTZ_H_XL it is still one. Data that i read from output registers is always 0. I change my acc to be 104 hz. Same picture. If i don`t read than i don`t see any interrupts coming. So first problem is to read data inside interrupt callback. (but i can read it in main). Stuck in I2C, i cannot explain what the difference when i trying to read i2C inside interrupt or outside. Second why interrupts are coming in different timing and data is always 0. ps: I can retrieve data from acc if my INT_1 = 0, and i read from OUTX_L_XL. #lsm6ds3 ##lsm6ds3-#fifo #lsm6ds3-interrupt |
|
相关推荐
2个回答
|
|
您的传感器配置应足以使加速度计正常工作。
我认为你的数据读取或I2C通信有一些问题,因为你总是读0。 您能阅读WHO_AM_I注册吗? 以上来自于谷歌翻译 以下为原文 You sensor configuration should be enough to make the accelerometer functional. I think there is something wrong with you data reading or I2C communication in general, because you read always 0. Are you able to read WHO_AM_I register? |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2730 浏览 1 评论
3239 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1808 浏览 1 评论
3647 浏览 6 评论
6035 浏览 21 评论
1337浏览 4评论
197浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
350浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
442浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
273浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:15 , Processed in 1.036863 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号