Настроил SPI
Код
/*!< SPI Config */
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; //APB1=36Mhz => ~1Mhz //APB2=72Mhz
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPIx, &SPI_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; //APB1=36Mhz => ~1Mhz //APB2=72Mhz
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPIx, &SPI_InitStructure);
Размер задан - байт - SPI_DataSize_8b
На скопе на клоке вижу 16 бит - после передачи 8 бит посылает еще 8.
Я что то недонастроил?
Передача байта такая
Код
uint32_t SPI_TransferByte(SPI_TypeDef *SPIx, uint8_t data)
{
uint32_t timeout;
// All data transmitted/received but SPI may be busy so wait until done.
timeout = SPI_DELAY;
while (SPIx->SR & SPI_I2S_FLAG_BSY) { if(!timeout--) return SPI_ERR; }
// Setting the Data Register (DR) transmits the byte of data on MOSI.
SPIx->DR = data;
// Wait for any data on MISO pin to be received.
timeout = SPI_DELAY;
while (!(SPIx->SR & SPI_I2S_FLAG_RXNE)) { if(!timeout--) return SPI_ERR; }
// Return the data received on MISO pin.
return (uint8_t)(SPIx->DR);
}
{
uint32_t timeout;
// All data transmitted/received but SPI may be busy so wait until done.
timeout = SPI_DELAY;
while (SPIx->SR & SPI_I2S_FLAG_BSY) { if(!timeout--) return SPI_ERR; }
// Setting the Data Register (DR) transmits the byte of data on MOSI.
SPIx->DR = data;
// Wait for any data on MISO pin to be received.
timeout = SPI_DELAY;
while (!(SPIx->SR & SPI_I2S_FLAG_RXNE)) { if(!timeout--) return SPI_ERR; }
// Return the data received on MISO pin.
return (uint8_t)(SPIx->DR);
}