1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

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

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

Degrees
Сообщения: 13
Зарегистрирован: 05 сен 2018, 16:02
Предприятие: АО ПО "Север"

1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение Degrees »

Здравствуйте! Существует проблема с запуском MILSTD1553B (ГОСТ Р52070 2003, он же МКИО) на микроконтроллере К1921ВК028. Необходимо настроить как ОУ (УТ в терминологии документации микроконтроллера). Есть ли у кого примеры реализации? Благодаря plib028 легко запустил ШИМ, АЦП, BFLASH, по поводу MILSTD1553B пусто...

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

uint32_t  RX_Dim[128];

struct C_Word{
	uint32_t Tx_Sz			: 5;
	uint32_t Tx_Irq			: 1;
	uint32_t Tx_Log			: 1;
	uint32_t Tx_En			: 1;
	uint32_t Rx_Sz			: 5;
	uint32_t Rx_Irq			: 1;
	uint32_t Rx_Log			: 1;
	uint32_t Rx_En			: 1;
	uint32_t Bc_Rx_En		: 1;
	uint32_t Ign_Dat_Valid		: 1;
	uint32_t Wrap			: 1;
	uint32_t unused			: 13;
};  

typedef union {
	uint32_t  all;
	struct  C_Word bit;
}C_Word;


typedef struct {
	C_Word Control_Word;
	uint32_t RX_Pointer;
	uint32_t TX_Pointer;
	uint32_t unused;
}Str_Tab_Sub;  


Str_Tab_Sub    Tab_Podadres[32]  __attribute__((aligned(512)));		// таблица подадресов. 

void MKIO_Init(void){
uint16_t n;
	RCU_AHBClkCmd(RCU_AHBClk_MILSTD0, ENABLE);
	RCU_AHBRstCmd(RCU_AHBRst_MILSTD0, ENABLE);
	RCU_MILSTDClkCmd(MILSTD0_Num, ENABLE);
	RCU_MILSTDClkConfig(MILSTD0_Num,RCU_PeriphClk_PLLClk, 4, ENABLE);
	RCU_MILSTDRstCmd(MILSTD0_Num, ENABLE);

	Freq_MKIO = RCU_GetMILSTDClkFreq(MILSTD0_Num); // проверка тактовой
	
// =================================== Иницализация УТ МКИО =========================== >>>
															// Иницализация таблицы подадресов.
	for( n=0; n<32; n++){
		Tab_Podadres[n].Control_Word.all = 0;
		Tab_Podadres[n].RX_Pointer =03;
		Tab_Podadres[n].TX_Pointer =03;
		Tab_Podadres[n].unused =0;
	}
	MILSTD0->RTSADDR_bit.SATB = ((uint32_t) &Tab_Podadres[0])>>9 ;		//начальный адрес таблицы подадресов.

	Tab_Podadres[0].RX_Pointer = (uint32_t) &RX_Dim[0];
	Tab_Podadres[0].Control_Word.bit.Rx_En = 1;
	Tab_Podadres[0].Control_Word.bit.Rx_Sz = 1;

	Tab_Podadres[1].RX_Pointer = (uint32_t) &RX_Dim[0];
	Tab_Podadres[1].Control_Word.bit.Rx_En = 1;
	Tab_Podadres[1].Control_Word.bit.Rx_Sz = 1;

	Tab_Podadres[2].RX_Pointer = (uint32_t) &RX_Dim[0];
	Tab_Podadres[2].Control_Word.bit.Rx_En = 1;
	Tab_Podadres[2].Control_Word.bit.Rx_Sz = 1;

	MILSTD0->RTCON_bit.BRS = 0;
	MILSTD0->RTCON_bit.SYDS = 0;
	MILSTD0->RTCON_bit.SYS =0;
	MILSTD0->RTCON_bit.RTEN = 1;		//в регистр конфигурации УТ: установить бит RTEN
// <<< =================================== Иницализация УТ МКИО 
}
После отправки сообщения с одним словом данных
MILSTD0->IR_bit.RTTE взводится в "1" - ошибка доступа к таблице УТ.
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение dav »

Degrees писал(а): 13 июл 2021, 09:47 Здравствуйте! Существует проблема с запуском MILSTD1553B (ГОСТ Р52070 2003, он же МКИО) на микроконтроллере К1921ВК028. Необходимо настроить как ОУ (УТ в терминологии документации микроконтроллера). Есть ли у кого примеры реализации? Благодаря plib028 легко запустил ШИМ, АЦП, BFLASH, по поводу MILSTD1553B пусто...

После отправки сообщения с одним словом данных
MILSTD0->IR_bit.RTTE взводится в "1" - ошибка доступа к таблице УТ.
Доброго времени суток!
Во вложении архив проекта с реализацией Оконечного Устройства
k1921vk028-MILSTD_RT.zip
Пример реализации Оконечного Устройства в 1921ВК028
(229.01 КБ) 182 скачивания
Degrees
Сообщения: 13
Зарегистрирован: 05 сен 2018, 16:02
Предприятие: АО ПО "Север"

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение Degrees »

Спасибо!
Degrees
Сообщения: 13
Зарегистрирован: 05 сен 2018, 16:02
Предприятие: АО ПО "Север"

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение Degrees »

Здравствуйте уважаемые разработчики микроконтроллера. На прием заработало! Еще раз большое спасибо! На выводах передачи присутствуют ответные пачки. Вывод передача/прием (основного канала нулевого интерфейса) всегда в "1" после инициализации MILSTD1553B. Это что-то с контроллером? Так и должно быть? Или я "не умею его готовить"? :oops: У меня К1921ВК028...
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение dav »

Degrees писал(а): 22 июл 2021, 16:59 Здравствуйте уважаемые разработчики микроконтроллера. На прием заработало! Еще раз большое спасибо! На выводах передачи присутствуют ответные пачки. Вывод передача/прием (основного канала нулевого интерфейса) всегда в "1" после инициализации MILSTD1553B. Это что-то с контроллером? Так и должно быть? Или я "не умею его готовить"? :oops: У меня К1921ВК028...
Доброго времени суток!
После инициализации выходы TXD, TXDN должны быть в состоянии лог. 0, входы RXD, RXDN - в зависимости от состояния выходов ИМС приемника MILSTD1553, подключенного к микроконтроллеру.
RPavel
Сообщения: 1
Зарегистрирован: 05 апр 2023, 10:15
Предприятие: ПНППК

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение RPavel »

Здравствуйте!
Вывод TX_EN всегда в "1" после инициализации MILSTD1553B в режиме удаленного терминала (как и в предыдущем сообщении).
Помогите решить данную проблему.
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение dav »

RPavel писал(а): 05 апр 2023, 17:30 Здравствуйте!
Вывод TX_EN всегда в "1" после инициализации MILSTD1553B в режиме удаленного терминала (как и в предыдущем сообщении).
Помогите решить данную проблему.
Доброго времени суток!
Вывод TX_EN изменяет свое состояние при приеме команд "Блокировать передатчик" и "Разблокировать передатчик".
Согласно Таблице 27.8 на стр. 250 Руководства пользователя при приеме Оконечным Устройством (ОУ) команды "Блокировать передатчик", ОУ перестает отвечать на команды по другой шине (но не по той, по которой получил данную команду управления), при этом сигнал разрешения передатчика "TXEN" (на другой шине ) переводится в неактивное состояние.
Соответственно, для переключение сигнала разрешения передатчика "TXEN" в активное состояние необходимо подать команду "Разблокировать передатчик".
andzdv
Сообщения: 1
Зарегистрирован: 26 апр 2023, 20:25
Предприятие: НПО Алмаз Фазатрон г. Саратов

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение andzdv »

Здравствуйте. Присоединяюсь к выше описанной проблеме по поводу постоянной выдачи лог. 1 на выходах разрешения работы передатчиков обоих каналов (M0_A_TXEN и M0_B_TXEN) непосредственно при включении модуля (у нас это MILSTD0) в режиме УТ. Не получается запустить модуль ни на прием, ни на передачу. Использовали "архив проекта с реализацией Оконечного Устройства". Отличия только в том что у нас используется порт E, OSECLK_VAL = 20МГц (SYSCLK = 20МГц, PERIFCLK = 20МГц). В остальном все как в проекте. Такая ситуация возникает независимо от КС от другого КШ, даже когда тот выключен. Так что о командах "Разблокировать передатчик" речи не идет. В нашем случае интерфейсные микросхемы 5559ИН13У1 греются как утюги. Как представляется, выходы TXEN в режиме УТ должны включатся исключительно на время передачи ОС или СД на аппаратном уровне (когда порт включен в режиме альтернативной функции МПИ). Просьба помочь!
dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение dav »

andzdv писал(а): 26 апр 2023, 21:12 В нашем случае интерфейсные микросхемы 5559ИН13У1 греются как утюги. Как представляется, выходы TXEN в режиме УТ должны включатся исключительно на время передачи ОС или СД на аппаратном уровне (когда порт включен в режиме альтернативной функции МПИ). Просьба помочь!
Доброго времени суток!
Интерфейсные микросхемы 5559ИН13У1 греются в случае появления на входах передатчика запрещенной комбинации. Для 5559ИН13У1 запрещенная комбинация - низкий логический уровень на входах DI1 и DI2 (таблица истинности на стр. 10 технического описания 5559ИН13У1 ).
Так как микроконтроллер 1921ВК028 при отсутствии передач переводит выводы TxD и TxDN в состояние логического нуля, мы на плате макетно-отладочной перед входом передатчика устанавливали инвертеры.
1921VK028_MKIO_sch.PNG
1921VK028_MKIO_sch.PNG (136.12 КБ) 1066 просмотров
Вывод TX_EN изменяет свое состояние только при приеме команд "Блокировать передатчик" и "Разблокировать передатчик". При этом прием команд "Блокировать передатчик" и "Разблокировать передатчик" по каналу А изменяют состояние вывода TX_EN канала B, а прием - по каналу B - изменяет вывод канала A.
pavel22
Сообщения: 1
Зарегистрирован: 16 авг 2023, 09:31
Предприятие: АО концерн ЦНИИ Электроприбор

Re: 1921ВК028 MILSTD1553B (ГОСТ Р52070 2003) как оконечное устройство.

Сообщение pavel22 »

Добрый день! Я пытаюсь осуществить прием и передачу 32 байт данных, используя пример "из архива". Чтение данных с микроконтроллера получилось реализовать (обращение по подадресу 1), а с передачей данных микроконтроллеру возникли проблемы (обращение по подадресу 2). Передается только 1 пакет, а последующие не передаются. Выяснил, что после передачи первого пакета происходит перезапись поля RDSCR в подадресе 2, причем числом, которое имеет порядковый номер 8 в моей посылке. И из-за этого перестают посылаться ответные слова от МК. Складывается ощущение, что как-то неправильно работает DMA. Пробовал принудительно быстро перезаписывать RDSCR правильным значением (которое присваивается при инициализации таблицы), при этом начинали посылаться ответные слова от МК, однако данные, принимаемые МК, все еще не меняются. В чем может быть проблема?
Ответить

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