Здравствуйте!
В паре мелких проектов использовал процессор STM8S105C4T6.
Среда программирования и отладки IAR.
При настройке интерфейса SPI заметил такой ньюанс:
Если перед включением интерфейса в настройках GPIO установить биты, отвечающий за скорость (с 2МГц на 10МГц), то процессор вылетает по неподдерживаемой ошибке. По крайней мере так говорит отладчик IAR. Если настройки GPIO не трогать, то SPI работает в соответствии с документацией на частоте 4МГц.
Всё бы ничего, но документации (RM0016 Reference manual STM8S and STM8A microcontroller families) в разделе 11.8.1 есть такая фраза:
Examples: SPI output pins must be set-up as push-pull, fast slope for optimal operation.
Т.е. производитель рекомендует выводы настраивать именно так.
Может кто-то сталкивался с этим моментом или есть какие-то мысли по этому поводу. Пример кода ниже:
//--------------------------------------------- // Инициализация GPIO
PC_CR1_bit.C15 = 1; PC_CR2_bit.C25 = 1 // SCK
PC_CR1_bit.C16 = 1; PC_CR2_bit.C26 = 1 // MOSI
//--------------------------------------------- // Инициализация SPI
SPI_CR1 = 0;
SPI_CR1_bit.BR = 1; // Fclk / 4 = 4 МГц
SPI_CR1_bit.CPOL = 1; // clock polarity
SPI_CR1_bit.CPHA = 1; // clock phase
SPI_CR1_bit.LSBFIRST = 0; // msb first
SPI_CR2 = 0;
SPI_CR2_bit.SSI = 1; // master mode
SPI_CR2_bit.SSM = 1; // software mode
SPI_CR1_bit.MSTR = 1; // master mode
SPI_CR1_bit.SPE = 1; // enable SPI