[[FrontPage]] #contents 2013/11/24からのアクセス回数 &counter; ** LaunchPad SPIモジュール [#pb62dc6f] LM4F120Fには、3個のSSI((SPIと同様の機能を持つ同期シリアル・インターフェイス))モジュールが搭載されており、それぞれssi0~ssi2となっています。 今回は、Dポートに接続されているssi1を使ってArduinoのSPIスレーブと通信して、動作を確認しました。 SSI関連のAPIについては、 [[同期シリアル・インターフェイ>http://ja.processors.wiki.ti.com/index.php/%E5%90%8C%E6%9C%9F%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9(SSI)-StellarisWare_PDLUG(Japanese)#SSIConfigSetExpClk [[同期シリアル・インターフェイ>http://ja.processors.wiki.ti.com/index.php/%E5%90%8C%E6%9C%9F%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9(SSI)-StellarisWare_PDLUG(Japanese)]] に日本語の説明がでていますので、参考にしてください。 *** SPI接続の結線 [#d3a655db] LaunchPadのピンは、以下の様になっています。 - J3_6 (PD3) ssi1Tx (MOSIに相当) - J3_5 (PD2) ssi1Rx (MISOに相当) - J3_3 (PD0) ssi1Clk (SCKL) - J3_2 (GND) Arduinoのピンは、以下のピンを使用します。 - D11 (MOSI) - D12 (MISO) - D13 (CLK) - GND AdruinoとLaunchPadの結線は、以下の様になっています。 &ref(SPI_setting.png); ** Arduinoのスレーブモジュール [#f8d0feaa] Arduino側のスレーブモジュールには、arduino_spi_slave.pdeのスケッチを使用しました。 詳しくは、[[raspberrypi/SPIを試す]]を参照してください。 *** Hello worldを送る [#qb375129] テストプログラムは、Hello Worldの後に改行を加えた文字列をArduinoに送ります。 SPITutorial.cppは、以下の様にしました。 #pre{{ #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "driverlib/ssi.h" #include "driverlib/pin_map.h" int main(void) { char *pcChars = "Hello World\n"; long lIdx; // The SSI1 peripheral and port D must be enabled for use. SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // Configure the pin muxing for SSI1 functions on port D. GPIOPinConfigure(GPIO_PD0_SSI1CLK); GPIOPinConfigure(GPIO_PD2_SSI1RX); GPIOPinConfigure(GPIO_PD3_SSI1TX); GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1); GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3); // SSI を設定します。 SSIClockSourceSet(SSI1_BASE, SSI_CLOCK_SYSTEM); SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 500000, 8); // SSI モジュールをイネーブルします。 SSIEnable(SSI1_BASE); // データを送信します。 lIdx = 0; while (pcChars[lIdx]) { SSIDataPut(SSI1_BASE, pcChars[lIdx++]); while (SSIBusy(SSI1_BASE)) continue; } } }} *** 動作確認 [#dd9a6df2] LauchPadのプログラムを動かす前に、ArduionoのIDEメニューで「ツール」→「シリアルモニター」を選択し、ボーレートを115200 bpsにセットします。 それからLauchPadのプログラムを起動します。 Arduinoのシリアルモニターに以下の様にHello Worldが出れば完成です。 &ref(spi_test_out.png); ** コメント [#w63e9a90] #vote(おもしろかった,そうでもない,わかりずらい) 皆様のご意見、ご希望をお待ちしております。 #comment_kcaptcha