2014-03-05 55 views
3

我試圖通過I2C總線我的Launchpad設備連接到Pololu MinIMU9v2九自由度傳感器。我正在Linux環境中工作,使用arm-none-eabi-gcc進行編譯,並從德州儀器網站下載了sw-ek-tm4c123gxl zip文件。如何使用I2C在TM4C123GXL(TivaC)的Launchpad

在通過驅動挖下載,我發現了文件夾(實例/外設/ I2C),其中包含(在一個C文件中的每個)3展示用於使用I2C總線。我們將Launchpad作爲從設備運行,下一個將其配置爲環回,最後,將Launchpad與Atmel基於I2C的存儲設備連接起來,使用它稱爲「軟I2c」。

我假定這種「軟」的部分是指它是基於軟件,利用中斷和所有。我正在尋找一個更簡單的解決方案,最好不要中斷。例如,回送示例就像一個魅力,但在修改它時,無論我嘗試什麼,我似乎都無法使它與MinIMU9進行通信。 MinIMU9的文檔非常清晰,但我認爲我對如何使用此驅動程序軟件缺乏瞭解。

最後,我不想推倒重來,但我似乎無法找到任何其他人談論I2C和Stellaris或tivac發射臺。試圖通過這種方式來實現這一點,我的方式是什麼?如果沒有,是否有更簡單的方法來解決這個問題?如果不是,我可以在哪裏瞭解更多關於我失蹤的事情?

+0

可能值得一提的是,我最終希望在FreeRTOS下將它作爲一項任務運行。 – Bobby

+0

這聽起來像你在正確的軌道上。您應該使用I2C或SPI與該傳感器進行通信。讓Tivaware I2C示例運行是一個很好的開始。要獲得更具體的幫助,您需要提供更具體的細節。你是如何連接傳感器的?你選擇了哪個從地址?你的代碼是什麼?什麼失敗了? – kkrambo

+0

你說得很對。我會發布具體答案。 – Bobby

回答

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); 

這解決了我的問題。