stm32f0 spi режим GPIO

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

stm32f0 spi режим GPIO

Сообщение mab72 »

Доброго времени.
stm32f042k6t6. Настраиваю spi Transmit only master. Собственно вопрос: в каком режиме надо настроить GPIO
-AF_PP
-AF_PP_PU
-AF_PP_PD
-AF_OD
-AF_OD_PU
-AF_OD_PD
Где это написано?
Спасибо.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32f0 spi режим GPIO

Сообщение VladislavS »

MOSI и SCK в AF_PP
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: stm32f0 spi режим GPIO

Сообщение tonyk »

[uquote="mab72",url="/forum/viewtopic.php?p=4201126#p4201126"]Доброго времени.
stm32f042k6t6. Настраиваю spi Transmit only master. Собственно вопрос: в каком режиме надо настроить GPIO
-AF_PP
-AF_PP_PU
-AF_PP_PD
-AF_OD
-AF_OD_PU
-AF_OD_PD
Где это написано?
Спасибо.[/uquote]
Это написано в мурзилках на микрухи, которые ты собираешься подключать.
Тебе нужны сигналы (минимум): MOSI, MISO, CLK, CS и, желательно, RST. Вот и смотри, как эти входы сделаны на тех микрухах. Скорей всего, достаточно будет РР без подтяжек. Ещё учти, что пока ты не настроил ноги у МК, они висят в воздухе, поэтому, возможно, понадобится притянуть хотя бы CS к какой-то шине питания высокоомным резистором.
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: stm32f0 spi режим GPIO

Сообщение mab72 »

Подключать собираюсь ST7735. Пойду листать DS на ST7735. Спасибо.

Добавлено after 2 hours 6 minutes 54 seconds:
Дано: stm32f0..., дисплей TFT_RGB 128x160 на базе ST7735s.
Задача: настроить SPI и вывести на дисплей точку в заданных координатах определенного цвета.
Если кому-то не сложно заделать разьяснения по поводу TFT_RGB 128x160 на базе ST7735s. Режим альтернативной функции (AF_PP, AF_PP_PU, AF_PP_PD, AF_OD, AF_OD_PU, AF_OD_PD) какой выбрать со ссылкой на документацию, порядок инициализации. Как понять из DS на ST7735s как инициализировать.
Спасибо.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: stm32f0 spi режим GPIO

Сообщение AlanDrakes »

Поработаю минутку за гуглопереводчик.
AF = Alternate Function. Альтернативная функция пина (относительно "обычной" - GPIO - Порт ввода-вывода ОБЩЕГО НАЗНАЧЕНИЯ). Альтернативная функция, грубо говоря, специальное назначение и в этом режиме порт переключается на управление каким-либо периферийным блоком и управляется уже им.
PP = Push-Pull. Значит может работать как пин, который с силой тянет ножку как к плюсу питания, так и к общему провода. Как правило, с допустимым током до 50-100мА.
PU / PD - Pull Up / Pull Down. Подтяжка вверх или вних. Подключается дополнительный резистор прямо на кремнии. Номинал где-то между 20кОм и 50кОм. Может варьироваться.
OD - Open-Drain вывод. В отечественной номенклатуре TTL чипов обозначалось как "ОК" - Вывод с открытым коллектором. Тянет ножку только к нулю. Если записать в пин "1", но отключить подтяжку к плюсу, оставив провод "болтаться в воздухе", и попытаться измерить на нём напряжение, то напряжение будет плавать, а, в зависимости от входного сопротивления мультиметра - даже покажет ноль. Можно собирать несколько таких пинов в схему подключения "Проволочное И".

Соответственно, для SPI портов пины /CS, MOSI, SCK должны быть AF_PP, MISO - AF_INPUT.

По поводу того, где читать - Reference Manual, как правило, раздел 6 - GPIO.

По процессу инициализации дисплея - в референс-мануале на контроллер дисплея.
Можете попробовать код, взятый здесь
Последний раз редактировалось AlanDrakes Вт мар 22, 2022 06:09:42, всего редактировалось 1 раз.
Реклама
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: stm32f0 spi режим GPIO

Сообщение mab72 »

[uquote="AlanDrakes",url="/forum/viewtopic.php?p=4201733#p4201733"]Поработаю минутку...[/uquote]

Про режим AF_PP с натяжкой вроде бы понял.
По поводу инициализации: готовых кодов в интернете есть много. Уровень моего английского не позволяет полноценно понять DS на st7735. Например для LCD1602 конкретно указана последовательность инициализации, даже моего уровня знания английского и при помощи интернета вполне себе понятно. А вот на st7735 нет такой последовательности или она так завуалирована... Вот я и прошу, что если кто-то сможет расписать инициализацию оного дисплея с привязкой к документации по пунктам. Думаю не мне одному это пригодилось бы.
Реклама
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: stm32f0 spi режим GPIO

Сообщение GoldenAndy »

mab72, когда то игрался с 7735.
последовательность команд инициализации была у продавана на Али.
По его мурзилке я и сделал. Устройство уже несколько лет работает.
Спойлер

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

#define ST7735_MADCTL_MY	0x80
#define ST7735_MADCTL_MX	0x40
#define ST7735_MADCTL_MV	0x20
#define ST7735_MADCTL_RGB	0x00
#define ST7735_MADCTL_BGR	0x08
#define ST7735_MADCTL_ML	0x10
#define ST7735_MADCTL_MH	0x04

#define ST7735_RGB444		0x03
#define ST7735_RGB565		0x05
#define ST7735_RGB666		0x06



#define ST7735_NOP			0x00
#define ST7735_SWRESET		0x01
//#define ST7735_RDDID		0x04
//#define ST7735_RDDST		0x09

#define ST7735_SLPIN		0x10
#define ST7735_SLPOUT		0x11
#define ST7735_PTLON		0x12
#define ST7735_NORON		0x13

#define ST7735_INVOFF		0x20
#define ST7735_INVON		0x21
#define ST7735_DISPOFF		0x28
#define ST7735_DISPON		0x29
#define ST7735_CASET		0x2A
#define ST7735_RASET		0x2B
#define ST7735_RAMWR		0x2C
#define ST7735_RGBSET		0x2D
//#define ST7735_RAMRD		0x2E

#define ST7735_PTLAR		0x30
#define ST7735_COLMOD		0x3A
#define ST7735_MADCTL		0x36 

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

// инициализация
void initDisplayST7735(void){
	setResetPinST7735(0);
	_delay_ms(50);
	setResetPinST7735(1);
	_delay_ms(10);

	sendCommandST7735(ST7735_SWRESET);
	_delay_ms(120);
	
	sleepModeST7735(0);	//	ST7735_SLPOUT
	_delay_ms(120);

	powerModeST7735(1);	//	ST7735_DISPON
	_delay_us(150);
	  
	// ali seller's init
	//--- ST7735S Frame Rate
	sendCommandST7735(0xB1);
	sendDataST7735(0x05);
	sendDataST7735(0x3C);
	sendDataST7735(0x3C);
	sendCommandST7735(0xB2);
	sendDataST7735(0x05);
	sendDataST7735(0x3C);
	sendDataST7735(0x3C);
	sendCommandST7735(0xB3);
	sendDataST7735(0x05);
	sendDataST7735(0x3C);
	sendDataST7735(0x3C);
	sendDataST7735(0x05);
	sendDataST7735(0x3C);
	sendDataST7735(0x3C);
	//--- End ST7735S Frame Rate
	sendCommandST7735(0xB4); //Dot inversion
	sendDataST7735(0x03);
	//--- ST7735S Power Sequence
	sendCommandST7735(0xC0);
	sendDataST7735(0x28);
	sendDataST7735(0x08);
	sendDataST7735(0x04);
	sendCommandST7735(0xC1);
	sendDataST7735(0XC0);
	sendCommandST7735(0xC2);
	sendDataST7735(0x0D);
	sendDataST7735(0x00);
	sendCommandST7735(0xC3);
	sendDataST7735(0x8D);
	sendDataST7735(0x2A);
	sendCommandST7735(0xC4);
	sendDataST7735(0x8D);
	sendDataST7735(0xEE);
	//--- End ST7735S Power Sequence
	sendCommandST7735(0xC5); //VCOM
	sendDataST7735(0x12);
	//--- ST7735S Gamma Sequence
	sendCommandST7735(0xE0);
	sendDataST7735(0x04);
	sendDataST7735(0x22);
	sendDataST7735(0x07);
	sendDataST7735(0x0A);
	sendDataST7735(0x2E);
	sendDataST7735(0x30);
	sendDataST7735(0x25);
	sendDataST7735(0x2A);
	sendDataST7735(0x28);
	sendDataST7735(0x26);
	sendDataST7735(0x2E);
	sendDataST7735(0x3A);
	sendDataST7735(0x00);
	sendDataST7735(0x01);
	sendDataST7735(0x03);
	sendDataST7735(0x13);
	sendCommandST7735(0xE1);
	sendDataST7735(0x04);
	sendDataST7735(0x16);
	sendDataST7735(0x06);
	sendDataST7735(0x0D);
	sendDataST7735(0x2D);
	sendDataST7735(0x26);
	sendDataST7735(0x23);
	sendDataST7735(0x27);
	sendDataST7735(0x27);
	sendDataST7735(0x25);
	sendDataST7735(0x2D);
	sendDataST7735(0x3B);
	sendDataST7735(0x00);
	sendDataST7735(0x01);
	sendDataST7735(0x04);
	sendDataST7735(0x13);
	//--- End ST7735S Gamma Sequence	   
	
	
	sendCommandST7735(ST7735_COLMOD);
	sendDataST7735(ST7735_RGB565);

	setMemoryWriteModeST7735(ST7735_MADCTL_RGB);	//	ST7735_MADCTL

	unsigned char i=0;
	sendCommandST7735(ST7735_RGBSET);  //Look up table
	for(i=0;i<32;i++)
		sendDataST7735(2*i); //Red
	for(i=0;i<64;i++)
		sendDataST7735(1*i); //Green
	for(i=0;i<32;i++)
		sendDataST7735(2*i); //Blue
}
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: stm32f0 spi режим GPIO

Сообщение mab72 »

GoldenAndy, спасибо. Ушел изучать.
Ответить

Вернуться в «ARM»