Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 06.04.2017, 19:40  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
Всё равно ведь такие вещи, как SDRAM
а я тут, расчувствовавшись и к прочей периферии недавно в одном проектике на F401 это применил, даже к USARTу закошерил. Периферию мне реально удобно показалось настраивать, проектик работает хорошо:
Код:
static  GPIO_TypeDef * const UsartGPIOInitTable[] = {
		GPIOA, 
		0
};
static uint8_t const UsartTxPINInitTable[] = {
		2,
		0
};
static uint8_t const UsartRxPINInitTable[] = {
		3,
		0
};
..........................
	uint8_t i = 0;
	//TX
	while(UsartGPIOInitTable[i] != 0)
	{
		gpio_conf(UsartGPIOInitTable[i], UsartTxPINInitTable[i], MODE_AF, TYPE_PUSHPULL, SPEED_50MHz, PULLUP_UP, 7);
		i++;
	}
	i = 0;
	//RX
	while(UsartGPIOInitTable[i] != 0)
	{
		gpio_conf(UsartGPIOInitTable[i], UsartRxPINInitTable[i], MODE_AF, TYPE_PUSHPULL, SPEED_50MHz, PULLUP_NONE, 7);
		i++;
	}		
..........................
з.ы. специально так сделал - USARTов может в военное время быть до 6 и более
Реклама:
oleg110592 вне форума  
Непрочитано 06.04.2017, 20:13  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

oleg110592, это не cmsis, а говно какое-то, которое точно нельзя использовать. Разве что как define оформить, потому как static inline такого плана нафиг не сдалось!
__________________
Союз Советских Социалистических Округов Северной Америки
eddy на форуме  
Непрочитано 06.04.2017, 20:56  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от eddy Посмотреть сообщение
которое точно нельзя использовать
ну тут каждый хозяин-барин, я вот вступил... для меня медом пахнет, если шо и поляк тоже, а он неплох, имхо, - реально в свое время его код помог разобраться с F429, SDRAM, ART Accelerator.
oleg110592 вне форума  
Непрочитано 06.04.2017, 22:07  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Действительно... кому как... Лично я пилял SDRAM и LTCD собственными силами, посему и не изобретал таблиц. И конфиг ТФТ-модуля выглядит вот так (на F746):
Нажмите, чтобы открыть спойлер

Код:
void LCD_TFT_Init(rgb888_t background_color)
{
	/* Тактирование интерфейсов */
	RCC-›AHB1ENR |= RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOGEN | 	// PE, PG,
					RCC_AHB1ENR_GPIOIEN | RCC_AHB1ENR_GPIOJEN | 	// PI, PJ,
					RCC_AHB1ENR_GPIOKEN;							// PK

	RCC-›APB2ENR |= RCC_APB2ENR_LTDCEN;								// LTDC

	GPIOI-›MODER |= GPIO_MODER_MODER12_0;			// PI12: PP (стендбай/норм. дисплея)
	GPIOK-›OTYPER |= GPIO_OTYPER_OT_3;				// для подсветки дисплея PK3 OD
	GPIOK-›MODER |= GPIO_MODER_MODER3_0;			// PK3 Out

	/* Настройка портов под RGBHV интерфейс */
	GPIOE-›MODER |= GPIO_MODER_MODER4_1;			// PE4: AF PP
	GPIOE-›AFR[0] |= 0x0E ‹‹ (4*(4));				// PE4: AF14

	GPIOG-›MODER |= GPIO_MODER_MODER12_1;			// PG12: AF PP
	GPIOG-›AFR[1] |= 0x0E ‹‹ (4*(12-8));			// PG12: AF14

	GPIOI-›MODER |= 0xA1280004 ;					// PI9, PI10, PI14, PI15: AF PP
	GPIOI-›AFR[1] |=  0xEE000EE0;					// PI9, PI10, PI14, PI15: AF14

	GPIOJ-›MODER = 0xA8AAAAAA ;						// PJ0 - PJ15, кроме PJ12: AF PP
	GPIOJ-›AFR[0] = 0xEEEEEEEE;						// PJ0 - PJ7: AF14
	GPIOJ-›AFR[1] = 0xEEE0EEEE;						// PJ8 - PJ15, кроме PJ12: AF14

	GPIOK-›MODER |= 0x0000AA2A;						// PK0 - PK7, кроме PK3: AF PP
	GPIOK-›AFR[0] |= 0xEEEE0EEE;					// PK0 - PK7, кроме PK3: AF14

	/* Настройка синхронизации дисплея */
	LTDC-›SSCR = ((HSYNCW - 1) ‹‹ 16) | (VSYNCW - 1);				// ширина горизонт и верт синхроимпульса

	LTDC-›BPCR = ((HSYNCW + HBP - 1)‹‹16) | (VSYNCW + VBP - 1);		// Back Porch + синхроимпульс, гориз и верт

	LTDC-›AWCR = ((HACTW + HSYNCW + HBP - 1) ‹‹ 16 ) |				// Back Porch + синхроимпульс + активная ширина и высота
			     (VACTW + VSYNCW + VBP - 1);

	LTDC-›TWCR = ((HACTW + HSYNCW + HBP + HFP - 1) ‹‹ 16) |			// суммарная синхронизация, гориз и верт:
			     (VACTW + VSYNCW + VBP + VFP - 1);					// Back Porch + Front Porch + синхроимпульс + активная ширина и высота

	LTDC-›BCCR = (background_color.r ‹‹ 16) |		// цвет фона по умолчанию, в компонентах RGB888
				 (background_color.g ‹‹ 8) |
				 (background_color.b);
}


а весь драйвер (*.c) занимает чуть больше 250 строк текста, вместе со всеми комментами и межстрочными пробелами, и выглядит весьма компактно и читаемо.
NewWriter вне форума  
Непрочитано 07.04.2017, 07:31  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
SDRAM и LTCD собственными силами
нус сравним.
Опустим настройку портов, хотя, имхо, именно там строк польского текста меньше (уточним - практически три строки) и соответственно "выглядит весьма компактно и читаемо" (поляку наверное так было удобнее).
Идем дальше - начало настройки LTCD:
пан поляк:
Код:
	............................................
	/* Synchronization Size Configuration */
	LTDC-›SSCR 			= ((HSYNC - 1) ‹‹ 16) 	| (VSYNC - 1);
	/* Back Porch Configuration */
	LTDC-›BPCR 			= ((HBP - 1) ‹‹ 16) 	| (VBP - 1);
	............................................
господин NewWriter:
Код:
............................................
	/* Настройка синхронизации дисплея */
	LTDC-›SSCR = ((HSYNCW - 1) ‹‹ 16) | (VSYNCW - 1);			// ширина горизонт и верт синхроимпульса
	LTDC-›BPCR = ((HSYNCW + HBP - 1)‹‹16) | (VSYNCW + VBP - 1);		// Back Porch + синхроимпульс, гориз и верт
	............................................
по моему два практически одинаковых велосипеда, "пиляли" каждый собственными силами, придраться не к чему, кроме, конечно настройки портов, но быть изобретательным человеком - это хорошо, имхо.
з.ы. ушли от темы, длинномер пора заносить - предлагаю закончить осуждать поляка и вернутся к нашим коровам 0xDEADBEEF
oleg110592 вне форума  
Непрочитано 07.04.2017, 09:50  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Так вот как раз если вернуться к тем самым коровам, то вот именно с точки зрения МК, табличка является не лучшим вариантом работы. Что неудобно программисту, то удобно МК, и наоборот. Мало того, что перебор и чтение всех элементов таблицы занимает гораздо больше времени, и реализация получается по типу SPL или HAL, так еще и сама таблица занимает место. И хотя при объемах флеша в мегабайт лишняя сотня байт погоды не сделает, а 180 МГц скорости проглотят любую таблицу, но все равно, дело эстетики. И как я понял, по такому методу режимы работы всех выводов в таблице будет одинаковые.
Выводы таких модулей, как SDRAM вообще жестко фиксированы и другой альтернативы нет. Один раз написал и забыл. Ладно бы там еще LTDC, у него небольшие вариации по выводам, да и то помелочи - "либо сюда, либо туда".

В принципе, вопрос предпочтений - дело лично каждого. Лично я - против, мне не нравится. Кому нравится - пользуйтесь.

PS.
Сообщение от oleg110592 Посмотреть сообщение
строк польского текста меньше (уточним - практически три строки)
и если уж так придираться в мелочах, то вовсе не три строки. Это как в рекламе - "скидки до 70%", а если разобраться, то лишь на одну, никому и даром не нужную позицию товара ценой рублей 100.
так вот, если разобраться, то...
при записи напрямую, без выкрутасов, получается 11 строк чистого текста, ну плюс 5 строк для настройки скорости, если надо.
А у того поляка - как в рекламе - видим три строки цикла с вызовом функции, но "в уме" имеем еще энное количество строк под таблицу и еще столько же строк под тело функции, плюс заморочки с тем, чтобы эту функцию не забыть прописать везде, откуда она вызывается.
И выходит как раз как в рекламе - "скидка 70%" тянет за собой прицепом "а еще заплатите за доставку", и лишь получив заказанное, думаешь - а нафига оно было надо...
Ладно бы, я там понимаю, если у тебя там штук 5 разбросанных параллельных интерфейсов висит..

Последний раз редактировалось NewWriter; 07.04.2017 в 10:37.
NewWriter вне форума  
Непрочитано 07.04.2017, 10:56  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от NewWriter Посмотреть сообщение
если вернуться к тем самым коровам
SDRAM - всеж не та корова, вопрос был в конструкции типа
PHP код:
GPIOA-›AFR[1] |= (‹‹ ((9-8)*4)) |        // PA9: AF7
                     
(‹‹ ((10-8)*4));        // PA10: AF7 
она хоть и есть в документации RM для F0 и в сниппетсах, но поначалу вводит в ступор (меня например). Разобравшись что это логика обычная - все равно вызывает кратковременное зависание мозга, могу делать ошибки. ТС тоже заакцентировал на этом внимание.
Кликать мышкой биты в калькуляторе тоже вводит меня в ступор, обязательно буду делать ошибки, видать такой склад недалекого умишки.
потому конструкция типа:
PHP код:
gpio_conf(GPIOInitTable[i], PINInitTable[i], MODE_AFTYPE_PUSHPULLSPEED_100MHzPULLUP_NONEAFInitTable[i]); 
где всего то надо заполнить табличку AFInitTable[i] обычными естественными значениями альтернативной функции вызвала мое одобрение и восхищение, о чем радостно поспешил сообщить на форуме. А тут просто получил ярлык - это г-но причем без пояснений почему же это оно. Памяти в моем проектике с USB хостом и Fatfs заняло около 24кБ (SPL из библиотеки повычищал), осталось памяти как гуталина, быстродействия тож хватает - точно не секунды порты настраиваются, глазом моргнуть не успеваю . Почему бы не пуркуа па?
oleg110592 вне форума  
Непрочитано 03.05.2017, 11:21  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Почему может не устанавливаться флаг RXNE у USART1 в STM32F407 при приеме байта?
В отладчике видно, что данные поступили правильно, но флаг RXNE не появляется. Если разрешить прерывание, то заход в обработчик прерывания от USART1 происходит. Но т. к. нет флага то и чтения регистра с данными в программе не происходит.
Инициализация USART1:
Код:
void STM32_UART_USART1_Init(void)
{

	//Настройка тактирования
	RCC-›AHB1ENR |=  RCC_AHB1ENR_GPIOAEN; //Тактирование GPIO
	RCC-›APB2ENR |= RCC_APB2ENR_USART1EN; //Тактирование модуля USART1
		

	//Настройка портов
	GPIOA-›AFR[1] |= 0x00000070 | 0x00000700; //Альтернативная функция
	GPIOA-›MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1; //Режим работы
	GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10; //Скорость порта
	//GPIOA-›OTYPER |= //Тип порта когда он является выходом
	GPIOA-›PUPDR |= GPIO_PUPDR_PUPDR9_0 | GPIO_PUPDR_PUPDR10_0; //Подтяжка порта
	
	USART1-›CR1 |= USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE; //Разрешить прием, передачу и прерывание по приему
	USART1-›BRR = 0x000002D9; //Скорость передачи: 115200
	
	NVIC_SetPriority(USART1_IRQn, 0); //Установка приоритета
	NVIC_EnableIRQ(USART1_IRQn); //Разрешение прерывания
}
Что делать незнаю! Какие могут быть варианты?

Попробую попозже на USART2 перейти.
Миниатюры:
Нажмите на изображение для увеличения
Название: USART1.jpg
Просмотров: 0
Размер:	36.8 Кб
ID:	113805  
MikhailSh вне форума  
Непрочитано 03.05.2017, 11:55  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от MikhailSh Посмотреть сообщение
Что делать незнаю! Какие могут быть варианты?
бит UE не разглядел
USART1-›CR1 |= USART_CR1_UE;
oleg110592 вне форума  
Непрочитано 03.05.2017, 12:29  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Бит UE в отладчике в ручную пока ставлю, на картинке он установлен.
Так же на картинке видно, что в DR поступил байт, а RXNE нет.

Последний раз редактировалось MikhailSh; 03.05.2017 в 13:19.
MikhailSh вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 HAL UART - не могу понять Ioann_II ARM 57 18.11.2016 16:10
Прием знаковых данных по I2C HAL STM32 dimdidim ARM 9 25.07.2016 22:35


Часовой пояс GMT +4, время: 22:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot