工具/软件:TI-RTOS
在我的主板上,PF0_GPIO32为I2C SDA路由,PF1_GPIO33为I2C SCL路由。
臂侧的代码大致如下所示:
- 配置(初始化)内存
- 配置GPIO端口(特别是PF0_GPIO32和PF1_GPIO33)
- 向C28xx引导加载程序发送信号以使C28xx运行
- 等待(无限) C28发出其正在运行的信号
- 配置EMAC
- 通过以太网向等待服务器发送文本字符串
- 无限等待("同时(1);")
C28xx端的代码大致如下所示:
- 配置(初始化)内存
- 向臂芯发出C28xx正在运行的信号
- 为I2C配置GPIO
- 发送I2C命令以打开LED
- 无限等待("同时(1);")
这在调试器中工作正常。 当然,我必须跳一点舞,让两个核心按正确的顺序运行:
- 我将两个应用程序加载到闪存(ARM和C28xx代码)。
- 我运行ARM代码,直到在步骤4中出现无限等待,然后暂停执行
- 我开始在C28xx内核上执行
- 我绕过步骤4中的无限等待代码(ARM代码)并让ARM核心运行
通过此过程,我可以看到服务器上的文本字符串(来自ARM内核,步骤6),并且LED亮起(来自C28xx内核,步骤4)。
不幸的是,如果我退出调试器并重新启动主板,我会得到不同的行为:我在服务器上得到文本字符串(从ARM内核,步骤6),但我看不到LED亮起。 因此,调试器似乎正在改变I2C GPIO的行为(或提供一些意外的配置)。
C28xx上是否有I2C示例程序? 我没有看到一个。 如果不能做到这一点, 我怎么能弄清楚调试器正在做什么(或者也许--某种程度上--不管gel文件正在做什么都是禁用的)?
谢谢!