我正在尝试通过I2C总线将我的Launchpad设备连接到Pololu MinIMU9v2 9DoF传感器。我在Linux环境中工作,使用arm-none-eabi-gcc编译,我从德州仪器网站下载了sw-ek-tm4c123gxl zip文件。
在挖掘驱动程序下载时,我确定了一个文件夹(examples / peripherals / i2c),其中包含3个演示(每个在单个C文件中)以使用I2C总线。一个将Launchpad作为从属设备运行,下一个将其配置为环回,最后,有一个将Launchpad与基于Atmel I2C的内存设备连接起来,使用它所称的“软I2c”。
我假设这个“软”部分意味着它是基于软件的,利用中断和所有。我正在寻找一个更简单的解决方案,最好没有中断。例如,环回示例就像魅力一样,但是在修改它时,无论我尝试什么,我似乎都无法与MinIMU9进行通信。 MinIMU9的文档很清楚,但我想我对如何使用这个驱动软件缺乏了解。
最后,我不想重新发明轮子,但我似乎无法找到任何其他人谈论I2C和stellaris或tivac launchpad。试图以这种方式实现这一点我是否有点不合适?如果没有,是否有更简单的方法来解决这个问题?而且,如果没有,我在哪里可以了解更多关于我缺少的东西?
答案 0 :(得分:3)
毕竟我能弄清楚。首先我没有注意到的一件事是,德州仪器提供了PDF外设资源,讨论了其驱动程序库的用法。不幸的是,这个文档远非全面,如果不是这些例子,可能仍然需要有人将自己埋没在代码中。
现在,外围设备示例需要一些工作才能开始。为了节省一些时间和精力,我尝试在examples / project / project.c的顶部复制master_slave_loopback.c,根据文件中的注释修改它,然后我能够编译示例并立即运行它
接下来,我尝试将新的project.c文件转换为允许我与MiniIMU9v2通信的内容。在大多数情况下,一切似乎都是直截了当的。我注释掉了与环回功能相关的任何内容,但是当我尝试执行该程序时,它将挂在以下行:
while(I2CMasterBusy(I2C0_BASE)) { }
为了开始排除故障,我可能不得不做些什么,我决定发布这个问题。幸运的是,这个问题比我所怀疑的要简单得多,也难以解决。快速搜索显示此页面:http://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/316580.aspx
我改变了:
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);
要:
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
这解决了我的问题。