Part Number:LAUNCHXL-CC1310
IIC 可以读取传感器ID,也可以正常写入配置,但是每当读取传感器中断状态时在if (!I2C_transfer(i2cH, &i2cTransaction))函数卡死(传感器在STM32上运行正常)。
Nick Sun:
您好,
收到您的问题了,我们升级到英文论坛给工程师看下,有答复尽快给到您。
,
YiKai Chen:
一般這種狀況常見的是传感器沒有回應,建議你排查一下传感器的電源是否正常
,
Nick Sun:
您好,
您可以参考YiKai的回复内容进行排查。
我这边想问您I2C_transfer 函数是阻塞了还是返回 false?
能否说明一下I2C在哪些情况下是成功的,哪些时候不成功?希望您能提供更多代码。
您能否解释一下图和代码是如何对应的。
如果您在阻塞模式下使用 I2C 驱动程序,那么 I2C_transfer() 必须从任务或者线程中调用,不能够从 ISR 或类似中调用。
希望能够帮助到您。
,
Star H:
但是传感器在STM32上运行是正常的
,
Star H:
1.I2C_transfer 函数是阻塞了,没有返回false
2.I2C在读取ID时是正常的,能够读到传感器的第一组数据,后边再
(function(id)
{var v = document.getElementById(id);var op = v.style.position, ol = v.style.left, or = v.style.right, fe = [];var nodeLimit = 50;checkVideo = function() {if (!v.canPlayType || v.error) {var bound = 0;while (v.childNodes.length > 0 && bound < nodeLimit) {bound++;if (v.childNodes[0].nodeName != 'SOURCE') {v.parentNode.insertBefore(v.childNodes[0], v);}}v.parentNode.removeChild(v);} else if (v.readyState == 0) {window.setTimeout(checkVideo, 249);}},checkVideoRendered = function() {if (v.networkState == 1 && v.readyState == 4) {v.style.position = op;v.style.left = ol;v.style.right = or;for (var i = 0; i < fe.length; i++) {fe[i].parentNode.removeChild(fe[i]);}} else {window.setTimeout(checkVideoRendered, 249);}}if (navigator.userAgent.indexOf('iPad') == -1 && navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPod') == -1) {window.setTimeout(checkVideo, 249);}
})('v_bc9d80e723f5435985ee471f8b419ef3');读传感器中断状态就会卡死(见视频)
,
Star H:
I2C初始化配置
,
Nick Sun:
您好,
我们会持续跟进解决您的问题,已经在和英文论坛工程师沟通中。
,
Nick Sun:
您好,
看起来是发生了 CPU 异常,但现在不能明确问题可能是什么。您是否看过在 Users Guide 里的 Deciphering CPU Exceptions 这一章?您也可以检查一下the ROV → Hwi → Exception information。
您可以参看以下以下链接:https://dev.ti.com/tirex/explore/content/simplelink_cc2640r2_sdk_3_20_00_21/docs/blestack/ble_user_guide/html/ble-stack-3.x-guide/debugging-index.html#deciphering-cpu-exceptions
我们也会持续跟进您的问题。
希望能够帮助到您。
,
Star H:
已经排查到问题了,在进行浮点运算时卡死的
,
Nick Sun:
您好,
能排查出就好,后续有问题可以重新开帖咨询。