Соединение:
HTS221 SCL --------- PB13(SCK2) STM32L100
................RDY---------PC6(RDY2)
................SDA---------PB15(MOSI2)
................CS------------PB12(CS2)
Использую код инициализации:
- Код: Выделить всё • Развернуть
 SPI_InitTypeDef SPI_InitStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
 SPI_Cmd(SPI2, DISABLE);
 SPI_I2S_DeInit(SPI2);
 // Настройки SPI2
 SPI_InitStructure.SPI_Direction=SPI_Direction_1Line_Tx;
 SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
 SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
 SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
 SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;
 SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
 SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;
 SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
 SPI_InitStructure.SPI_CRCPolynomial=7;
 SPI_Init(SPI2,&SPI_InitStructure);
 SPI_Cmd(SPI2,ENABLE);
Обмен данными:
- Код: Выделить всё • Развернуть
- while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET) {}
 for(uint32_t i=0; i<0x0000003F; i++);
 SPI_BiDirectionalLineConfig(SPI2,SPI_Direction_Tx);
 GPIO_ResetBits(GPIOB, GPIO_Pin_12);
 SPI2->DR = 0xBC;
 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) {}
 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET) {}
 for(uint32_t i=0; i<0x0000003F; i++);
 SPI_BiDirectionalLineConfig(SPI2,SPI_Direction_Rx);
 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET) {}
 for(uint32_t i=0; i<0x0000003F; i++);
 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) {}
 uint8_t temp2 = SPI2->DR;
 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET) {}
 for(uint32_t i=0; i<0x0000003F; i++);
 SPI_BiDirectionalLineConfig(SPI2,SPI_Direction_Tx);
 GPIO_SetBits(GPIOB, GPIO_Pin_12);
Датчик молчит.
а вот что на осциллографе:
Прошу вашей помощи в решении проблемы, даташитов начитался, как и всего остального, не помогает



