Stm32F4/FSMC Считывание пикселя из SSD1963

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Simn
Родился
Сообщения: 16
Зарегистрирован: Пт янв 20, 2012 10:56:11
Откуда: Москва

Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение Simn »

Здравия желаю!
Проблема в следующем: При чтении FSMC значения всегда возвращается предыдущее записанное в FSMC значение.
А нужно значения цвета пикселя SSD1963...
Собственно, в чем прикол???

Считывал так

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

#define LCD_REG      (*((volatile unsigned short *) 0x60000000))
#define LCD_RAM      (*((volatile unsigned short *) 0x60020000))

//0x2E read_memory_start
LCD_Write_Com(0x2E);
rtk[0]=LCD_RAM; //Все значения rtk[] одни и те же, то есть, что было записано в прошлый раз (LCD_Write_Com(0x2E))
rtk[1]=LCD_RAM;
rtk[2]=LCD_RAM;
rtk[3]=LCD_RAM;
код инициализации FSMC
Спойлер

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

FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
	FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructureRead;
	FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructureWrite;

	/* Enable FSMC Clock */
	RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);

	/* Define Read timing parameters */
	FSMC_NORSRAMTimingInitStructureRead.FSMC_AddressSetupTime = 10;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_AddressHoldTime = 10;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_DataSetupTime = 10;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_BusTurnAroundDuration = 0;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_CLKDivision = 0;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_DataLatency = 0;
	FSMC_NORSRAMTimingInitStructureRead.FSMC_AccessMode = FSMC_AccessMode_A;

	/* Define Write Timing parameters */
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_AddressSetupTime = 5;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_AddressHoldTime = 5;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_DataSetupTime = 5;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_BusTurnAroundDuration = 0;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_CLKDivision = 0;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_DataLatency = 0;
	FSMC_NORSRAMTimingInitStructureWrite.FSMC_AccessMode = FSMC_AccessMode_A;

	/* Define protocol type */
	FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //Bank1
	FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //No mux
	FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //SRAM type
	FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //16 bits wide
	FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =
			FSMC_BurstAccessMode_Disable; //No Burst
	FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait =
			FSMC_AsynchronousWait_Disable; // No wait
	FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity =
			FSMC_WaitSignalPolarity_Low; //Don'tcare
	FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; //No wrap mode
	FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive =
			FSMC_WaitSignalActive_BeforeWaitState; //Don't care
	FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
	FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //Don't care
	FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; //Allow distinct Read/Write parameters
	FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //Don't care

	// Set read timing structure
	FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct =
			&FSMC_NORSRAMTimingInitStructureRead;

	// Set write timing structure
	FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct =
			&FSMC_NORSRAMTimingInitStructureWrite;

	// Initialize FSMC for read and write
	FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

	// Enable FSMC
	FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
Реклама
khach
Электрический кот
Сообщения: 1038
Зарегистрирован: Сб сен 12, 2009 15:43:19

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение khach »

У SSD1963 очень слабый драйвер линии- при тех таймингах шины, которые STM32 прокачивает свободно, SSD1963 только начинает шевелить логическими уровнями. Кардинальное решение- ставить двунаправленный буфер со стороны дисплея. Не кардинальное-настройка таймингов цикла чтения. Осциллографом смотреть уровни на ножках около STM32 (а не около контроллера дисплея) при чтении, желательно с активным щупом, чтобы дополнительно не нагружать шину. В контроллер запрограммировать запись в пиксель каждый раз инвертированного значения, иначе при многократном чтении того же самого пикселя линия в конце концов дотянется до нужного уровня.
Реклама
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение baghear »

Добрый день подскажите пожалуйста для чего на разъем подключения FSMC выведены 5В?
Simn
Родился
Сообщения: 16
Зарегистрирован: Пт янв 20, 2012 10:56:11
Откуда: Москва

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение Simn »

baghear писал(а):Добрый день подскажите пожалуйста для чего на разъем подключения FSMC выведены 5В?
Это где написано?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение baghear »

Реклама
Simn
Родился
Сообщения: 16
Зарегистрирован: Пт янв 20, 2012 10:56:11
Откуда: Москва

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение Simn »

baghear писал(а):На плате http://we.easyelectronics.ru/uploads/im ... 337ad0.jpg
Понятно... Это доп питание для внешних устройств которые работают с 5в питанием. Или что бы не перегружать регулятор/стабилизатор(LDO) 3.3в на плате контроллера к нему можно подключать доп регулятор/стабилизатор 3.3в. Может и подсветку LCD.
Реклама
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: Stm32F4/FSMC Считывание пикселя из SSD1963

Сообщение baghear »

По поводу подсветки дисплей запустился, но подсветку подаю через резистор от 5 вольт, полагаю что это не правильно.
FSMC может как-то управлять подсветкой?
Пробовал подключать вывод PD13 на подсветку, вроде как он должен это делать, но не работает.

Разобрался, подсветкой можно управлять с помощью шим с PD13.
Ответить

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