u-e's tech

電子工作の際のメモや作曲したものを載せていきます

HALlibralyでのSPI_Transmitについて

前にタダで買った(配送料消すために追加した)STM32F469IIを調理しようと思い、

 

どうせmbed対応のnucleoボードあたりが出てるから楽だろ(ハナホジ)

 

なんて思いでいたら、なんとですよ。ないんですよ。F469IIのボードが。

せっかくなのでインターネットの先人の方々が公開されてる開発環境の使い方を見ながらSPI通信しようと思ったのですが、意外と手間取ってしまったのでここにまとめます。

 

ちなみに当方プログラムは大の苦手ゆえにこんなこともわからんのか!という点でコケてましたがご了承ください。

では本題に。

 

HALLibralyでSPIの送信だけを行いたい場合は

 

HAL_SPI_Transmit (SPI_HandleTypeDef * hspi, uint8_t * pData, uint16_t Size, uint32_t Timeout);

 

で送信できますが、この時に指定するのはそれぞれ

 

hspi→&hspix   (xには数字)

uint8_t*pData→(uint8_t*)配列の名前

size→配列の要素数

timeout→タイムアウトの時間

 

という具合です。

当初はpDataのところには変数を使えると思っていたのですが、海外の記事を読んでいたところ、pDataには配列を指定してやらないといけないっぽく、

 

int dactemp = 0;
HAL_SPI_Transmit(&hspi2,(uint8_t*)dactemp,1,10);

 

ではダメで

 

int dactemp[1] ={0};
HAL_SPI_Transmit(&hspi2,(uint8_t*)dactemp,1,10);

だといけるっぽいので参考までに