STM32

Programming

STM32のI2Cはよくわからん

I2Cで1バイトのレジスタリードをするとき、通常は START → スレーブアドレス(W)送信(W/ACK) → サブアドレス送信(W/ACK) → START(リスタート) → スレーブアドレス(R)送信(W/ACK) → レジスタデータ...
STM32

STM32のI2CのSMBAL(SMBus Alert)

STM32のI2CモジュールのSMBAL(SMBus Alert)信号線は、CR1 SMBUS bitを1にしてSMBusモードにしたときだけ使われるのかと思っていたら、 どうも、CR1 SMBUS bit=0のI2Cモードでも、I2CをP...
STM32

ARM(32bit)用GCCと64bitINTと8バイト境界とFAULT

CoreSourcery G++ 4.5.1 (GCC 4.3.2ベース)で、64bit int値を使うとどんなコードが出るのか見てみた。CPUはSTM32(Cortex-M3)。 ; volatile uint64_t a,b; push...
STM32

USBデバイス作成時はMicrosoft OS ディスクリプタに注意

人に指摘してもらって気がついたのだが、Windows XP SP1以降のWindowsは、USBデバイスから、Microsoft OS Descriptor なるものを取得しようとするらしい。 USB に関する FAQ: 中級レベル (mi...
Programming

STM32 ライブラリ xxx_StructInit() は必ず行う

STM32のライブラリでSPIを使ったが、どうも動作が不安定なので悩んでいた。 初期化は SPI_InitTypeDef SPI_InitStructure; // 2線・全二重モード SPI_InitStructure.SPI_Direc...