我正在尝试通过MinIMU9v2总线将我的Launchpad设备连接到Pololu I2C 9 9DoF传感器。我在一个Linux环境下工作,用arm-none-eabi-gcc编译,我已经从德州仪器公司的网站下载了sw tm4c123gxl压缩文件。
在深入了解驱动程序下载过程中,我确定了一个文件夹(示例/外围设备/ I2C ),其中包含了3个使用I2C总线的演示(每个在一个C文件中)。一种是将Launchpad作为从机运行,另一种是将其配置为回环,最后是使用它所称的“软I2c”将Launchpad与基于Atmel I2C的内存设备连接起来。
我假设这其中的“软”部分意味着它是基于软件的,利用中断等等。我正在寻找一个更简单的解决方案,最好没有中断。例如,环回示例就像一种魅力,但是在修改它时,我似乎无法让它与MinIMU9通信,不管我尝试了什么。MinIMU9的文档非常清楚,但我认为我只是缺乏对如何使用这个驱动程序软件的理解。
最后,我不想重新发明轮子,但我似乎找不到其他人在谈论I2C和stellaris或tivac launchpads。我试图用这种方式来实现这一点,是不是太离谱了?如果没有,是否有更简单的方法来解决这个问题?如果没有,我还能在哪里更多地了解我错过的东西呢?
发布于 2014-03-07 04:37:03
我还是能搞清楚的。首先,我没有注意到的一件事是,德州仪器提供了一个PDF外围设备资源,讨论了它们的驱动程序库的使用。不幸的是,这个文档还不够全面,如果没有示例的话,可能仍然需要有人将自己埋没在代码中。
现在,外围示例需要一些工作才能开始。为了节省一些时间和精力,我尝试在示例/project/project.c的顶部复制master_slave_loopback.c,根据文件中的注释修改它,然后能够编译这个示例并立即成功地运行它。
接下来,我尝试将新的project.c文件转换为允许我与MiniIMU9v2通信的文件。在大多数情况下,一切似乎都是笔直的。我注释掉了任何看起来与回送功能有关的内容,但是当我尝试执行程序时,它会挂在下面的一行:
while(I2CMasterBusy(I2C0_BASE)) { }为了开始解决这个问题,我已经不知所措了,于是我决定发布这个问题。幸运的是,这个问题比我想象的要简单得多,解决起来也令人惊讶。一个快速搜索显示了这个页面:arm/f/908/t/316580.aspx
我改变了:
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);至:
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);这解决了我的问题。
https://stackoverflow.com/questions/22188290
复制相似问题