This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
大家好、我们将通过 I2C 通信将 MSP430FR5969与 SGP30和 SEN55等空气质量传感器进行连接。 遗憾的是、我们无法成功从微控制器的寄存器中读取数据和向其中写入数据。 我们一直在关注 Code Composer Studio (CCS)中的引用、但我们的代码仍无法正常工作。 我们已经仔细检查了传感器和其他硬件外设、一切都在工作。 仍然只需要调整软件端。 我们使用的代码和输出如下所示:
在此代码中、我仅使用 MSP430作为主器件、并使用 SGP30作为从器件。
e2e.ti.com/.../SGP30_5F00_BARE_5F00_CODE.rtf
^这是我们用于 MSP430-SGP30连接的代码。
^这是输出。
您是否试用过 TI 提供的 SGP30 EVM? 您能查看 SGP30的数据表吗?
大家好、我们现在还没有使用 TI 提供的 SGP30EVM。 我们使用的是 M5Stack SGP30: https://shop.m5stack.com/products/tvoc-eco2-gas-unit-sgp30?srsltid=AfmBOorDw_PXT8iAoopx5bpm1J8sCkKxm5qf9idUKOx7tE-Pg3279z_E、 它还有一个 Sensirion 芯片。 数据表附在这里、我们已经 验证了所使用的引脚。
e2e.ti.com/.../Sensirion_5F00_Gas_5F00_Sensors_5F00_Datasheet_5F00_SGP30.pdf
我没有你的设备,但从阅读代码:
---
> P1SEL0 |= BIT6 | BIT7;//将 P1.6和 P1.7设置为 I2C 模式
> P1SEL1 &=~( BIT6 | BIT7 );
查看数据表(SLAS704G)表6-51、您应该使用 PSEL1=1和 PSEL0=0。 请尝试改用:
> P1SEL1 |= BIT6 | BIT7;//将 P1.6和 P1.7设置为 I2C 模式
> P1SEL0 &=~(BIT6 | BIT7 );
---
> UCB0CTLW1 = UCASTP_2;//自动停止模式
使用 UCASTP=2还需要设置 UCB0TBCNT (复位时)、我没看到有这样的设置。 ISR 似乎会在正确的时间发出停止命令、因此我建议您删除此行。
---
Master_Read 和 Master_Write 启动操作、但不要等待操作完成、因此下一个事务将覆盖当前事务。 查看 ISR、我建议您 在发出启动条件和等待停止条件之间插入"LPM0;"一行。 这会将 CPU 置于低功耗模式、直到 ISR 在事务结束时将其唤醒。