完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include I2CCC26XX_Object i2cCC26xxObjects[CC2640R2_LAUNCHXL_I2CCOUNT]; const I2CCC26XX_HWAttrsV1 i2cCC26xxHWAttrs[CC2640R2_LAUNCHXL_I2CCOUNT] = { { .baseAddr = I2C0_BASE, .powerMngrId = PowerCC26XX_PERIPH_I2C0, .intNum = INT_I2C_IRQ, .intPriority = ~0, .swiPriority = 0, .sdaPin = CC2640R2_LAUNCHXL_I2C0_SDA0, .sclPin = CC2640R2_LAUNCHXL_I2C0_SCL0, } }; const I2C_Config I2C_config[CC2640R2_LAUNCHXL_I2CCOUNT] = { { .fxnTablePtr = &I2CCC26XX_fxnTable, .object = &i2cCC26xxObjects[CC2640R2_LAUNCHXL_I2C0], .hwAttrs = &i2cCC26xxHWAttrs[CC2640R2_LAUNCHXL_I2C0], } }; const uint_least8_t I2C_count = CC2640R2_LAUNCHXL_I2CCOUNT; void HwI2CInit(void) { I2C_init(); I2C_Params_init(&I2Cparams); I2Cparams.bitRate = I2C_400kHz; I2Cparams.custom = NULL; I2Cparams.transferCallbackFxn = NULL; I2Cparams.transferMode = I2C_MODE_BLOCKING; I2CHandle = I2C_open(CC2640R2_LAUNCHXL_I2C0,&I2Cparams); } bool HalI2CWrite(uint8_t SlaveAddress, uint8_t WriteLen ,uint8_t* WriteBuf) { bool ret = false; I2C_Transaction i2cTransaction; i2cTransaction.writeBuf = WriteBuf; i2cTransaction.writeCount = WriteLen; i2cTransaction.readBuf = NULL; i2cTransaction.readCount = 0; i2cTransaction.slaveAddress = SlaveAddress; i2cTransaction.arg = NULL; ret = I2C_transfer(I2CHandle, &i2cTransaction); return ret; } bool HalI2CRead(uint8_t SlaveAddress, uint8_t ReadLen,uint8_t *ReadBuf) { bool ret = false; I2C_Transaction i2cTransaction; i2cTransaction.writeBuf = NULL; i2cTransaction.writeCount = 0; i2cTransaction.readBuf = ReadBuf; i2cTransaction.readCount = ReadLen; i2cTransaction.slaveAddress = SlaveAddress; i2cTransaction.arg = NULL; ret = I2C_transfer(I2CHandle, &i2cTransaction); return ret; } HwI2CInit后,调用HalI2CRead HalI2CWrite 获取 SHT31 数据,没有反应。 示波器查看CC2640R2_LAUNCHXL_I2C0_SCL0,没有产生波形,请教下哪里没有配置 |
|
相关推荐
1个回答
|
|
根据您提供的代码片段,您正在尝试使用CC2640R2F硬件I2C接口与SHT31传感器进行通信。但是,您遇到了一个问题,即在调用`HalI2CRead`和`HalI2CWrite`函数后,没有获取到SHT31的数据。以下是一些建议和可能的原因:
1. **初始化I2C**: 确保您已经正确初始化了I2C接口。这通常涉及到配置I2C的时钟速率、地址等。在您的代码中,`I2CCC26XX_HWAttrs`和`I2C_config`数组被用来初始化I2C,但请确保这些配置与您的硬件和传感器兼容。 2. **地址配置**: 确保您的SHT31传感器的I2C地址与您的代码中的配置相匹配。SHT31的I2C地址通常是0x44或0x45(取决于SA0引脚的状态)。 3. **传感器电源**: 确保SHT31传感器已经正确连接到电源,并且电源是稳定的。 4. **连接检查**: 检查I2C数据线(SDA和SCL)是否正确连接到SHT31传感器和CC2640R2F开发板。 5. **传感器初始化**: 确保在尝试读取或写入数据之前,SHT31传感器已经正确初始化。这可能涉及到发送特定的命令来启动传感器。 6. **错误处理**: 检查`HalI2CRead`和`HalI2CWrite`函数的返回值,以确定是否有错误发生。如果函数返回错误,您需要根据错误代码进行相应的处理。 7. **时序问题**: I2C通信可能受到时序问题的影响。确保您的I2C时钟速率与SHT31传感器兼容。 8. **中断和轮询**: 如果您的I2C配置为中断驱动模式,请确保中断处理函数正确实现,并且中断没有被禁用或优先级设置不当。如果使用轮询模式,请确保轮询逻辑正确。 9. **固件/软件版本**: 确保您的CC2640R2F开发板固件和软件库是最新的,以避免已知的兼容性问题。 10. **调试和日志**: 在您的代码中添加调试日志,以帮助确定问题发生的位置。这可以包括在I2C初始化、读取和写入操作前后添加日志。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
高通的蓝牙QCC308x和51xx芯片开发工具和文档必须高通审核才能下载和使用吗?
2765 浏览 0 评论
1653 浏览 0 评论
会员风采!华秋电子——致力于“为电子产业增效降本”的数字化智造平台
1072 浏览 0 评论
【应用笔记】BlueNRG-LP、BlueNRG-LPS+省电模式
8115 浏览 1 评论
11318 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 16:38 , Processed in 0.475293 second(s), Total 41, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号