Внешнюю память отключил. Сигнал SCK не генерируется, ни после загрузки, ни после инициации SPI при отладке. Как Вы и пишете, ожидал сигнал вне зависимости от подключения памяти. Функцию инициализации AT93C46_Init(), отвечающую за инициализацию SPI, не трогал. На всякий случай привожу этот фрагмент кода.ches писал(а): ↑05 мар 2024, 17:05 Здравствуйте! Попробуйте для начала отключить микросхему внешней памяти от контроллера, запустить пример и отследить генерируется ли сигнал SCK? Данный тактовый сигнал будет генерироваться аппаратно при сконфигурированном модуле SPI конкретно в момент передачи данных (например при передаче команды Write Enable из примера) даже при отсутствии подключенной микросхемы внешней памяти. При отсутствии передачи данных на выводе будет держаться логический ноль.
Код: Выделить всё
void AT93C46_Init()
{
RCU->SPICFG_bit.CLKSEL = RCU_SPICFG_CLKSEL_PLLCLK;
RCU->SPICFG_bit.CLKEN = 1;
RCU->SPICFG_bit.RSTDIS = 1;
SPI->CPSR_bit.CPSDVSR = 50;
SPI->CR0_bit.SCR = 9; // SCK=100MHz/((9+1)*50)=200kHz
SPI->CR0_bit.FRF = SPI_CR0_FRF_SPI;
SPI->CR0_bit.DSS = SPI_CR0_DSS_16bit;
SPI->CR1_bit.SSE = 1;
RCU->HCLKCFG_bit.GPIOBEN = 1;
RCU->HRSTCFG_bit.GPIOBEN = 1;
GPIOB->ALTFUNCSET = (GPIO_ALTFUNCSET_PIN5_Msk |
GPIO_ALTFUNCSET_PIN6_Msk |
GPIO_ALTFUNCSET_PIN7_Msk);
GPIOB->OUTENSET = GPIO_OUTENSET_PIN4_Msk;
GPIOB->DENSET = (GPIO_DENSET_PIN4_Msk |
GPIO_DENSET_PIN5_Msk |
GPIO_DENSET_PIN6_Msk |
GPIO_DENSET_PIN7_Msk);
EnableDelay();
}