Задать вопрос
hakain
@hakain
Немного знаю С/С++, Qt, и микроконтроллеры

Графический контроллер FT800 и микроконтроллер STM32. Кто то работал с такой комбинацией железа?

Суть вопроса заключается в выводе кириллицы на дисплей посредством графического контроллера FT800. В библиотеке, которую я использую, нет встроенной функции для загрузки шрифтов. Попытка самостоятельной реализации путем реверс-инжиринга кода на ардуино не увенчались успехом. Если кто то занимался подобным железом прошу помочь в решении вопроса. Заранее благодарю.

Исходный код моей реализации загрузки шрифтов в ОЗУ графического контроллера.
void cmd_inflateFont(const uint8_t* font, uint32_t ptr, int length) {	
	
	//uint16_t count;
	uint16_t sizetransfered;
	uint16_t getfreespace;
	uint32_t length_ =0;
	uint32_t i;
	uint32_t length_1 =0, SizeTransfered = 0;
	unsigned char cTempAddr[3];
	
	ft800memWrite32(RAM_CMD + cli, CMD_INFLATE);
	cli += 4;
	ft800memWrite32(RAM_CMD + cli, ptr);
	cli += 4;

	do {
	length_ = length;
	
	getfree(0);
	
	if (length_ > freespace){
		length_ = freespace;
	}

	do{
		getfree(0);
		getfreespace = freespace;
	}	while(getfreespace < length_);
	

	waitcmdfifo_empty();

	FT800_CS_OFF;	// Set chip select low

	SSP_SendData ((uint8_t)((RAM_CMD)>> 16) | MEM_WRITE);
	SSP_SendData ((uint8_t)((RAM_CMD) >> 8));
	SSP_SendData ((uint8_t)(RAM_CMD));
	cli++;
	LED4_SET;
	
	while (length_--) {
		
		SSP_SendData (ft_pgm_read_byte_near(font));						// Send data byte
		font++;
		cli++;
		sizetransfered++;
	}
	
	FT800_CS_ON;		// Set chip select high
	length_ = sizetransfered;
	updatecmdfifo(cli);
	waitcmdfifo_empty();
	
	length -= length_;
	
}	while(length > 0);
	
	updatecmdfifo(cli);
}
  • Вопрос задан
  • 1178 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vadimatorikda
Инженер-программист, embedded разработчик
Достаточно специфичный вопрос. Думаю, тут не стоит привязываться конкретно к STM32. Надо просто в общем сделать запрос на C/C++ библиотеку отвязанную от железа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы