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.

[参考译文] TMS320F28069M:带 Motorware 的 I2C

Guru**** 2204280 points
Other Parts Discussed in Thread: MOTORWARE, LAUNCHXL-F28069M, DRV8301
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1427295/tms320f28069m-i2c-with-motorware

器件型号:TMS320F28069M
主题中讨论的其他器件:MOTORWARELAUNCHXL-F28069MDRV8301

工具与软件:

我有一个 LaunchXL-F28069M Launchpad 和一个 DRV8301电机驱动器、并且我已在 motorware 中使用 proj10d 成功使电机旋转。  我还有一个 CC2640R2蓝牙板在接收游戏手柄数据、并希望通过 I2C 将此数据中继到 Launchpad F28069M。  我已经测试了 CC2640R2的 I2C 引脚、并验证数据是否按预期从该板输出。  我已经研究了 SimpleLink C2000 SDK 中的 I2C_EEPROM 示例、并尝试在项目10d 中实现相同的逻辑、但没有成功。  我设置了与 EEPROM 示例类似的所有适当寄存器、但当我查看寄存器时、它们没有我设置的值。  我不知道我在做什么错。  可能有东西正在被重置。  我不确定。  我正在尝试使用 f28069m 电路板的引脚32和33。  非常感谢为解决我的问题提供任何帮助。

在 proj10d 的 main 函数中,调用 hal_setparams()并依次调用 hal_setupGpios()。  在此函数中、我添加了代码、以模仿在 i2c_EEPROM 示例中设置的相同寄存器

我可以看到 proj10d 项目中有一个 i2c.h 文件。  因此、我创建了一个 i2c.c 文件并再次初始化了 i2c 寄存器以模拟 i2c_eeprom 示例、并且在运行电机的无限循环之前调用此函数

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
void I2C_init() {
//
// Initialize I2C
//
I2caRegs.I2CSAR= 0x0050; // 7-bit Slave address
I2caRegs.I2CPSC.all = 6; // I2C clock between 7Mhz-12Mhz
I2caRegs.I2CCLKL = 38; // Prescalers set for 100kHz bit rate
I2caRegs.I2CCLKH = 38; // At a 10Mhz I2C clock
I2caRegs.I2CIER.all = 0x0; //Disable Interrupts
I2caRegs.I2CEMDR.all = 0X0020; // Take I2C out of reset
return;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是、当我运行该程序时、不会设置寄存器。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有人可以帮您解决这个问题吗?