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.
6 years, 6 months ago.
Nucleo-L476RGからSPI通信を利用したMCP4922でのDACがうまくいきません
Nucleo-L476RGからSPI通信を利用したMCP4922でのDACを試みているのですがうまくいきません。
物理的な接続としては以下の通りです。
接続元 | 接続先 | その先の接続先 |
---|---|---|
Nucleo-L476RG_MOSI(D11) | MCP4922_SDI | |
Nucleo-L476RG_SCK(D13) | MCP4922_SCK | |
Nucleo-L476RG_D8 | MCP4922_LDAC | |
Nucleo-L476RG_GND | MCP4922_CS | |
Nucleo-L476RG_5V | MCP4922_Vdd | |
Nucleo-L476RG_GND | MCP4922_AVSS | |
MCP4922_VoutA | LED+300Ω | Nucleo-L476RG_GND |
コードは以下の通りです。
#include "mbed.h" //LDAC DigitalOut ldc(PA_9); int main() { //Start printf("Start\r\n"); //Init SPI device(SPI_MOSI, SPI_MISO, SPI_SCK); device.format(16,0); //InitLDAC ldc=1; //Loop printf("LoopStart\r\n"); while(1) { ldc=1; device.write(0x3fff); ldc=0; wait(1); ldc=1; device.write(0x3000); ldc=0; wait(1); } }
SPI通信がうまく出来てないのかと思い、ループバック的な事(Nucleo-L476RG上でMOSI-MISOを直結してread)もしてみましたが、 問題無く通信できていました。
色々調べてみたんですが…接続・コード等に間違いはありますでしょうか。 よろしくお願いします。
1 Answer
6 years, 6 months ago.
外しているかもしれませんが、
CS が GND 固定になっているようですが、
デバイスによっては CS の立ち下がり、立ち上がりをみているものもあります。
試しに MCP4922_CS を GPIOに接続して
DigitalOut cs(1) ; ... cs = 0 ; device.write(0x3fff); cs = 1 ;
等としてみて変化があるか見てみるのは如何でしょうか?
moto
ありがとうございます。
なかなか時間が取れず、試すのが遅くなって申し訳ございません。
CSとLDACの立ち下がり、立ち上がりを意識して配線&コードを書いたところ、
正常にMCP4922から電圧が出力されるようになりました。
-
dac_cs=0;
dac_ldac=1;
device.write(hw1_outdata_highbyte);
device.write(hw1_outdata_lowbyte);
dac_cs=1;
dac_ldac=0;
-
Nucleo-L476RGのDACで出力していた音声データをMCP4922から出力する事が出来るようになりました。
Nucleo-L476RGのDACに比べてかなり音が悪くなって雑音も入るようになってしまいましたが、恐らく別の問題だと思いますので別途調べてみたいと思います。
ありがとうございました。ご迷惑をおかけしました。
問題解決に直接関係無いかも知れませんが、ハードウェア関係で一点コメントします。
posted by Kenji Arai 14 May 2018MCP4922の入力信号レベルは、仕様書を見ると、入力信号のHレベルが、
0.7 x VDD = 0.7 x 5 = 3.5V
なければなりません。
3.3VでL476が動作しているので、動作してもICの実力で動作する範囲です。
特にSCLKのD13は、Mbedボード上でLED1をシンク駆動しているので、Hレベルが低い可能性があります。
目的は達成できなくても、VDDを3.3Vとして動作確認してはいかがでしょうか?
ハードとソフトの問題切り分けが出来ると思います。
ありがとうございます。 今回はCSとLDACのタイミングの問題のようでしたが、今後は信号レベルについても留意して回路を考えるようにします。 参考になりました。 ありがとうございました。
posted by RYO HABARA 03 Jun 2018