Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 5 months ago.
LPC1114FDHでSPISlaveが動かない。
お世話になっております。 LPC1114FN28が流通しなくなり、変わりにLPC1114FDH28が流通しだしたので、こちらを使っています。
LPC1114FDH28で電圧を監視して、SPIslaveで外部の要求に対応するよう考えていたのですが、サンプルプログラムどおりのコードを入れて様子を見てもコードどおりの反応が得られませんでした。
SPIslaveを定義した後、mainの中でUARTでコードの通過箇所を出力したところ、どうやらmainにはいる前に止まってしまっているようです。
LPC1114FN28ではSPIslaveは正しく動いているのでしょうか。 過去の情報では、LPC1114FN28でSPIslaveが動かないバグを修正したといった報告があり、デバイス依存の問題なのかソフトの問題なのかを切り分けたいです。
確認できる方、よろしくお願いします。
1 Answer
7 years, 4 months ago.
シリアルコンソールに、「pinmap not found for peripheral」と表示されているのであれば、ポートの指定が正しくありません。 そうではなく、main()関数に到達しないのであれば別の原因が考えられるので、現象が再現するコードをお送り下さい。
LPC1768をマスター、LPC1114FN28をスレーブにしてテストしましたが、特に問題なく動作しました。スレーブ側のコードを以下に示します。
// Reply to a SPI master as slave #include "mbed.h" SPISlave device(P0_9, P0_8, P0_6, P0_2); // mosi, miso, sclk, ssel Serial pc(USBTX, USBRX); int main() { pc.printf("SPISlave test start.\n"); device.reply(0x00); // Prime SPI with first reply while(1) { if(device.receive()) { int v = device.read(); // Read byte from master printf("%d ", v); v = (v + 1) % 0x100; // Add one to it, modulo 256 device.reply(v); // Make this the next reply } } }