[[ファームウェア関数一覧>ファームウェア関数一覧#aa40dd64]] *SPI_Init [#vafadb6f] #contents **ヘッダ宣言 [#xddd117f] **関数プロトタイプ [#r300aebb] void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct) **動作 [#md35f48e] -SPIx/I2Sx周辺回路レジスタに値を設定し初期化します。 **引数 [#e148f6d7] -SPIx&br; #include(Macro/SPIx,notitle) -SPI_InitStruct&br; '''stm32f10x_spi.h'''で定義されているSPI_InitTypeDef構造体へのポインタです。 typedef struct { uint16_t SPI_Direction; uint16_t SPI_Mode; uint16_t SPI_DataSize; uint16_t SPI_CPOL; uint16_t SPI_CPHA; uint16_t SPI_NSS; uint16_t SPI_BaudRatePrescaler; uint16_t SPI_FirstBit; uint16_t SPI_CRCPolynomial; } SPI_InitTypeDef; --SPI_Direction 信号の本数と送受信の方向を設定します。 通常マスタとスレーブはMISOとMOSIの2本で接続されますが、それぞれ送受信専用として一本の接続でも使えます。&br; &br; #include(Macro/SPI_Direction,notitle)&br; &br; --SPI_Mode #include(Macro/SPI_Mode,notitle) --SPI_DataSize #include(Macro/SPI_DataSize,notitle) --SPI_CPOL&br; クロックパルスの極性を設定します。&br; &br; #include(Macro/SPI_CPOL,notitle) &br; --SPI_CPHA&br; ラッチとシフトのどちらが先行するかを設定します。&br; &br; #include(Macro/SPI_CPHA,notitle) &br; --SPI_NSS&br; SPIのNSS(Slave select)のソースをNSSピンにするかレジスタにするかを設定します。&br; Hardの場合NSSピンの信号が内部NSSに接続されます。&br; Softの場合SSIビット(CR1)が内部NSSに接続されます。内部NSSがアサートされるとSPIがスレーブとして動作します。&br; STM32のSPIモジュールでは、マスタモードでNSS信号の出力を有効化すると、アサートされ続けてしまうという仕様です。&br; &br; #include(Macro/SPI_NSS,notitle) &br; --SPI_BaudRatePrescaler #include(Macro/SPI_BaudRatePrescaler,notitle) --SPI_FirstBit&br; 最初に送信するビットを設定します。&br; &br; #include(Macro/SPI_FirstBit,notitle) &br; --SPI_CRCPolynomial&br; SPI_CRCPolynomialはCRC計算に使用される多項式を定義します。&br; uint16_t型で指定します。&br; &br; **出力値 [#o681cde7] -無し **戻り値 [#ufaad4d3] -無し **場所 [#kb59de54] **呼び出し関数 [#cb72c02b] -無し **サンプル [#r6b3367e] /* Initialize the SPI1 according to the SPI_InitStructure members */ SPI_InitTypeDef SPI_InitStructure; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DatSize = SPI_DatSize_16b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); **参照 [#t0efaa1e] -