1921ВК035 (общие вопросы)

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Аватара пользователя
Vey_Shi
Сообщения: 22
Зарегистрирован: 19 окт 2023, 12:29
Предприятие: АО НИТИ Авангард
Откуда: Санкт-Петербург

Re: Тактирование SPI

Сообщение Vey_Shi »

ches писал(а): 05 мар 2024, 17:05 Здравствуйте! Попробуйте для начала отключить микросхему внешней памяти от контроллера, запустить пример и отследить генерируется ли сигнал SCK? Данный тактовый сигнал будет генерироваться аппаратно при сконфигурированном модуле SPI конкретно в момент передачи данных (например при передаче команды Write Enable из примера) даже при отсутствии подключенной микросхемы внешней памяти. При отсутствии передачи данных на выводе будет держаться логический ноль.
Внешнюю память отключил. Сигнал SCK не генерируется, ни после загрузки, ни после инициации SPI при отладке. Как Вы и пишете, ожидал сигнал вне зависимости от подключения памяти. Функцию инициализации AT93C46_Init(), отвечающую за инициализацию SPI, не трогал. На всякий случай привожу этот фрагмент кода.

Код: Выделить всё

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();
}

Веерный Игорь
инженер-программист
АО НИТИ Авангард
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Тактирование SPI

Сообщение ches »

Vey_Shi писал(а): 07 мар 2024, 09:55 Внешнюю память отключил. Сигнал SCK не генерируется, ни после загрузки, ни после инициации SPI при отладке. Как Вы и пишете, ожидал сигнал вне зависимости от подключения памяти. Функцию инициализации AT93C46_Init(), отвечающую за инициализацию SPI, не трогал. На всякий случай привожу этот фрагмент кода.
Добрый день! Вы можете попробовать в постоянном цикле писать любые данные в регистр DR модуля SPI.
Например:
while (1) {
if(SPI->SR_bit.TNF) SPI->DR_bit.DATA = 0xA5A5;
};
И на выводе контроллера B5 будет постоянно генерироваться тактовый сигнал.
Аватара пользователя
Nikita
Сообщения: 15
Зарегистрирован: 29 фев 2024, 12:58
Предприятие: АО АБРИС
Откуда: СПб

Re: 1921ВК035 (общие вопросы) РП

Сообщение Nikita »

Здравствуйте. Проверьте правильность написания битовых полей TXINP и RXINP, для обьектов сообщения CAN.
(РП1921ВК035 - стр.163)
Изображение
chel_mn
Сообщения: 1
Зарегистрирован: 13 мар 2024, 15:00
Предприятие: АО НПП "АМЭ"

Re: 1921ВК035 (общие вопросы)

Сообщение chel_mn »

Добрый день. Есть ли пример работающего проекта для данного МК с портированной FreeRtos или другой ОСРВ?
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы) РП

Сообщение ches »

Nikita писал(а): 12 мар 2024, 12:49 Здравствуйте. Проверьте правильность написания битовых полей TXINP и RXINP, для обьектов сообщения CAN.
(РП1921ВК035 - стр.163)
Здравствуйте! Благодарю за то, что обратили внимание.

При использовании режима FIFO логика прерываний базовых объектов сообщений следующая:
- выходная линия прерываний для принимающего базового объекта определяется битовым полем TXINP регистра MOIPR
- выходная линия прерываний для передающего базового объекта определяется битовым полем RXINP регистра MOIPR
Подробно FIFO структура объектов сообщений рассмотрена в подразделе 18.9 Руководства пользователя

Стоит отметить, что для вспомогательных объектов сообщений структуры FIFO прерывания настраиваются как для стандартных объектов сообщений:
- выходная линия прерываний для принимающего объекта сообщения определяется битовым полем RXINP регистра MOIPR
- выходная линия прерываний для передающего объекта сообщения определяется битовым полем TXINP регистра MOIPR
Последний раз редактировалось dav 15 мар 2024, 09:09, всего редактировалось 1 раз.
Причина: уточнение
Аватара пользователя
Nikita
Сообщения: 15
Зарегистрирован: 29 фев 2024, 12:58
Предприятие: АО АБРИС
Откуда: СПб

Re: 1921ВК035 (общие вопросы)

Сообщение Nikita »

chel_mn писал(а): 13 мар 2024, 15:41 Добрый день. Есть ли пример работающего проекта для данного МК с портированной FreeRtos или другой ОСРВ?
Если у Вас Keil попробуйте сами проект создать для FreeRTOS, тут написано как:
https://disk.yandex.ru/i/NWanD8P0MngCQg
(стр.26 CMSIS-RTOS2)
Сам пока подробно не разбирался, может с этим МК и не получится.
Аватара пользователя
Vey_Shi
Сообщения: 22
Зарегистрирован: 19 окт 2023, 12:29
Предприятие: АО НИТИ Авангард
Откуда: Санкт-Петербург

Re: Тактирование SPI

Сообщение Vey_Shi »

ches писал(а): 07 мар 2024, 12:10 Добрый день! Вы можете попробовать в постоянном цикле писать любые данные в регистр DR модуля SPI.
Например:
while (1) {
if(SPI->SR_bit.TNF) SPI->DR_bit.DATA = 0xA5A5;
};
И на выводе контроллера B5 будет постоянно генерироваться тактовый сигнал.
Здравствуйте! Использовал дословно этот код. Пока отлаживал, ничего на осциллографе не было видно. Закончил отладку - увидел на ноге B5 меандр двойной амплитудой в 330 мВ и частотой 200 кГц. Частота верная, амплитуда непонятная. Возможно, сможете подсказать, откуда такое поведение? Пожалуйста.

Веерный Игорь
инженер-программист
АО НИТИ Авангард
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Тактирование SPI

Сообщение ches »

Vey_Shi писал(а): 18 мар 2024, 10:06
Здравствуйте! Использовал дословно этот код. Пока отлаживал, ничего на осциллографе не было видно. Закончил отладку - увидел на ноге B5 меандр двойной амплитудой в 330 мВ и частотой 200 кГц. Частота верная, амплитуда непонятная. Возможно, сможете подсказать, откуда такое поведение? Пожалуйста.
Добрый день! К данному выводу (B5) что-то еще подключено? Пришлите пожалуйста осцилограмму сигнала.
Аватара пользователя
Vey_Shi
Сообщения: 22
Зарегистрирован: 19 окт 2023, 12:29
Предприятие: АО НИТИ Авангард
Откуда: Санкт-Петербург

Re: Тактирование SPI

Сообщение Vey_Shi »

ches писал(а): 19 мар 2024, 08:57 Добрый день! К данному выводу (B5) что-то еще подключено? Пришлите пожалуйста осцилограмму сигнала.
Здравствуйте! Есть подвижки: исправил задаваемую частоту тактирования ядра - сигнал на ноге SCK в момент передачи появился. Частота соответствует. По SPI подключил внешнюю flash-память. Прикрепляю полученную осциллограмму: первый канал - TX, второй - RX. Очень смущают уровни сигналов и форма ответа.
DS0001.jpg
DS0001.jpg (37.33 КБ) 992 просмотра

Веерный Игорь
инженер-программист
АО НИТИ Авангард
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Тактирование SPI

Сообщение ches »

Vey_Shi писал(а): 19 мар 2024, 16:55 Здравствуйте! Есть подвижки: исправил задаваемую частоту тактирования ядра - сигнал на ноге SCK в момент передачи появился. Частота соответствует. По SPI подключил внешнюю flash-память. Прикрепляю полученную осциллограмму: первый канал - TX, второй - RX. Очень смущают уровни сигналов и форма ответа.
Здравствуйте! Вероятнее всего, на линии сигналов RX и TX оказывается внешнее воздействие. Попробуйте снять осцилограмму сигналов TX и SCK при отключенной микросхеме внешней памяти, чтобы исключить внешнее воздействие.
Ответить

Вернуться в «32-разрядные микроконтроллеры»