ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
690372 Топик полностью
-AB- (30.07.2016 10:49, просмотров: 195) ответил Лагунов на Ну что ж, скептики могут гордиться собой. С HAL-драйверами надо очень осторожно. По крайней мере в STM32L476/ Всё у меня было прекрасно (UART, I2C, RTC, порты и проч.) А вот со SPI засада с чтением. Если включаешь 8-битное, то похоже глюк из-за
Да, нужно учитывать, что читает он по 32-битному слову за раз.  У меня вот так работает, настройки - как приводилось выше. uint8 SPIByteReadReg(uint8 addr) { uint8 value8; uint32 value32 = 0x00000000; addr &= ~(AUTOINC_ON_BIT + WRITE_BIT); CS_EN; HAL_SPI_Transmit(&hspi_TDC, &addr, 1, 10); HAL_SPI_Receive(&hspi_TDC, (uint8*)&value32, 4,10); CS_DIS; value8 = (uint8) value32; return value8; } void SPIAutoIncReadReg(uint8 addr, uint8 *buffer, uint8 size) { uint8 i; uint32 dummy32 = 0x00000000; uint8* buf; addr &= ~WRITE_BIT; addr |= AUTOINC_ON_BIT; buf = buffer; for(i=0; i< size; i++) *buf++ = 0x00; CS_EN; HAL_SPI_Transmit(&hspi_TDC, &addr, 1, 10); HAL_SPI_Receive(&hspi_TDC, (uint8 *)&dummy32, 3, 10); HAL_SPI_Receive(&hspi_TDC, buffer, size, 10); CS_DIS; }