Перейти к содержанию
    

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

6 hours ago, vasilius said:

если прерывания не разрешены

Э... в gic разрешены?  Или срабатывания независимо от маски в gic?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.01.2024 в 04:34, nanorobot сказал:

Посмотрите Здесь

Спасибо! посмотрел, было интересно, как они инитят ТР, до этого смотрел Тина линус, но там было импользование как АЦП , а не ТР.

У меня опыта работы с татчем нет, поэтому и просил провести ликбез.

В моем понимании, у них там не совсем корректно тоже сделано.

Спойлер
static irqreturn_t tpadc_handler(int irq, void *dev)
{
    hal_tpadc_t *tpadc = (hal_tpadc_t *)dev;
    u32  reg_val;
    u32 x_data, y_data;
    u32 i;

    reg_val = sunxi_tpadc_irq_status(tpadc->reg_base);
    if (reg_val & TP_DATAPEND) {
        x_data = hal_tpadc_data_read(tpadc->reg_base);
        tpadc->callback(x_data, DATA_X);
        y_data = hal_tpadc_data_read(tpadc->reg_base);
        tpadc->callback(y_data, DATA_Y);
    }

    if (reg_val & TP_UPPEND) {
        tpadc->callback(0, DATA_UP);
    }

    if (reg_val & TP_DOWNPEND) {
        TPADC_INFO("touch down ");
    }

    sunxi_tpadc_clear_pending(tpadc->reg_base);

    return TPADC_OK;
}

 

При нажатии у них тоже DOWN никак не обрабатывается, только UP и опрос. Но там же в статусе есть колл-во считаных выборок RXA. И в моем понимании, надо или их всех вычитывать  и проверять на какой-то порог отклонения, ну или не ограничиваться только первым значение, как сделано у них.

Еще один момент... Независимо от того какое прерывание включено :

TP_DATA_IRQ_EN | TP_UP_IRQ_EN | TP_DOWN_IRQ_EN

Всегда в статусе срабатывают и UP и DOWN флаги.

При DOWN счетчик заполнения буфера RXA всегда равен нулю, при UP в завивимости от длительности нажатия, но RXA всегда не ноль. 

вот мой инит

Спойлер
__WEAK void TPADC_InitTP(void)
{
	CCU_SetTPADC(CCU_TPADC_SRC_HOSC);

	TPADC->TP_INT_FIFO_CTRL_REG = 0;
	TPADC_FlushFIFO();
	const uint32_t status = TPADC->TP_INT_FIFO_STAT_REG;
	TPADC->TP_INT_FIFO_STAT_REG = status;				 // clear the pending status.

	TPADC->TP_CTRL_REG0 =
							(0x0F << 24) |  	// ADC_FIRST_DLY
							(0x01 << 23) |		// ADC_FIRST_DLY_MODE
							(0x03 << 20) | 		// ADC_CLK_DIVIDER  /1
							(0x0B << 16) |		// FS_DIV
							(0x02 <<  0) |		// TACQ
							0;

	TPADC->TP_CTRL_REG1 =
							(0x00 << 12) |  	// STYLUS_UP_DEBOUNCE
							(0x00 <<  9) |		// STYLUS_UP_DEBOUCE_EN
							(0x01 <<  8) | 		// CHOPPER_EN
							(0x00 <<  6) |		// TP_DUAL_EN
							(0x01 <<  5) | 		// TP_EN
							(0x00 <<  4) |		// TP_MODE_SELECT
							(0x00 <<  3) |		// ADC_CHAN3_SELECT
							(0x01 <<  2) |		// ADC_CHAN2_SELECT
							(0x00 <<  1) |		// ADC_CHAN1_SELECT
							(0x01 <<  0) |		// ADC_CHAN0_SELECT
							0;

	TPADC->TP_CTRL_REG2 =
							(0x0F   << 28) |  	// TP_SENSITIVE_ADJUST
							(0x00   << 26) |	// TP_FIFO_MODE_SELECT
							(0x01   << 24) | 	// PRE_MEA_EN
							(0xFFF  <<  0) |	// PRE_MEA_THRE_CNT
							0;

	TPADC->TP_CTRL_REG3 =
							(0x01   << 2) |  	// FILTER_EN
							(0x01   << 0) |		// FILTER_TYPE 01: 5/3
							0;

	TPADC->TP_INT_FIFO_CTRL_REG =
									(0x00  <<  17) |  	// TP_OVERRUN_IRQ_EN
									(0x00  <<  16) |	// TP_DATA_IRQ_EN
									(0x00  <<  13) |	// TP_DATA_XY_CHANGE
									(0x00  <<   8) |	// TP_FIFO_TRIG_LEVEL
									(0x00  <<   7) |	// TP_DATA_DRQ_EN
									(0x00  <<   4) |	// TP_FIFO_FLUSH
									(0x01  <<   1) |	// TP_UP_IRQ_EN
									(0x00  <<   0) |	// TP_DOWN_IRQ_EN
									0;

	SetHandlerIRQ(TPADC_IRQn, TPADC_IRQHandler, PRI_SYS, 0);

 

 

прерывание примерно так, но выходит бред по координатам...

Спойлер
__WEAK void TPADC_IRQHandler(void)
{

	const uint32_t status = TPADC->TP_INT_FIFO_STAT_REG;
	TPADC->TP_INT_FIFO_STAT_REG = status;				 // clear the pending status.

	uint32_t rxData = (status >> 8) & 0x3F;
	uint32_t xD, yD, xU, yU;
	//if (BIT_GET(status, 16))		// FIFO_DATA_PENDING

	if (BIT_GET(status, 1) && rxData)
	{
		uart_print("\n\r RXA_START=");		u32touart0(( status >> 8) & 0x3F); uart_print(" "); u32touart0( status);
		while ( (TPADC->TP_INT_FIFO_STAT_REG >> 8) & 0x3F )
		{
			xU = TPADC->TP_DATA_REG;
			yU = TPADC->TP_DATA_REG;
		}

		uart_print("\n\r TP_UP_CH0=");	u32touart0(xU);
		uart_print("\n\r TP_UP_CH2=");	u32touart0(yU);

		uart_print("\n\r RXA_END=");			u32touart0(( TPADC->TP_INT_FIFO_STAT_REG>> 8) & 0x3F);

		npf_pprintf(&uart0_putc, NULL, "\n\r x=%d y=%d \n", (xU * 480) / 4095 , (yU * 272) / 4095);
	}

 

 

 

 

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/9/2024 at 11:43 PM, mantech said:

А ну эт из разряда вам шашечки или ехать)))))  Мне вот все равно, главное надежность работы. Программный спи хорош тем, что я не привязан к конкретным пинам, а это дорогого стоит, особенно в подобных случаях...

Ногодрыг-SPI плох отсутствием DMA.

 

On 1/9/2024 at 10:57 PM, repstosw said:

Так что либо рисовать свою плату (или редактировать существующую) или делать шлейфик из гибкой PCB.

Решение найдено. Без уродств: софтовых(ногодрыг) и аппаратных(шлейфики всякие)...

И для ленивых котиков (не разводить самостоятельно плату ядра, не сношать пикад с альтиумом, итп...) :lol:

 

Так как в релизе собираюсь использовать LCD марки  LQ035NC111, он поддерживает один из режимов - Serial RGB,о котором я уже писал ранее, когда работал с OLED 160x128 :

Spoiler

160x128.jpg

1.thumb.jpg.c86042c5ae47ce36d2181ede04e41f80.jpg

 

На плате 100ASK-T113 как раз свободны ноги: PD13,PD12,PD10,PD11 (это соответственно SPI1_MISO,SPI1_MOSI,SPI1_CS,SPI1_CLK).   Но они же: LCD_D19,LCD_D18,LCD_D14,LCD_D15, которые НЕ используются в режиме Serial RGB:

2.thumb.jpg.2556a1abe187575f0319879730e4f855.jpg

 

Бонусом получаю SPI NAND Flash на SPI0. Так что паять SD-карту необязательно. :biggrin:

Плюс почти в 3 раза меньше подключений для LCD. Скорость не страдает, так как клок TCON увеличивается втрое.

Остаётся проверить это всё на практике, когда придут шлейфы FPC05-54 (для макета надо делать переходник для подключения LCD к плате mangoPi с 40-pin на 54-pin).

На релизе всё будет проще: сразу 54-пиновый коннектор для LCD LQ035NC111 (320x240).

s-l500.jpg

 

Попутно вот ещё нашёл одну вариацию T113-s3 SOM (третья по счёту, как я понимаю): https://www.myirtech.com/list.asp?id=722

 MYC-YT113X CPU Module

Делает  китайская контора MYiR - Make Your idea Real ! :sun_bespectacled:

Из плюсов данного модуля:

1) Заключён в металлический экран

2) Аналоговая земля выведена на внешний пин (AGND).

Даташиты и схемы - на сайте.

mycyt113t300.jpg

 

P.S. Модуль ASK100-T113 придётся доработать:  изменить резисторы в окружении DC/DC конвертера на ядро: повысить напряжение с 0,9V до 0,95V

3.thumb.jpg.fd4a354b6556ef51783840393eb11cc5.jpg

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, repstosw сказал:

MYC-YT113X CPU Module

Он дороже и больше по размеру, ethernet PHY там тоже нет, поэтому остановился на ASK100-T113.

46 минут назад, repstosw сказал:

Модуль ASK100-T113 придётся доработать:  изменить резисторы в окружении DC/DC конвертера на ядро:

В версии 1.2 и выше вроде исправили))

47 минут назад, repstosw сказал:

один из режимов - Serial RGB,

Какая экзотика, наверно есть только в экранчиках с маленьким разрешением...

48 минут назад, repstosw сказал:

Ногодрыг-SPI плох отсутствием DMA.

Которое далеко не всегда нужно, ИМХО...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 minutes ago, mantech said:

Он дороже и больше по размеру, ethernet PHY там тоже нет, поэтому остановился на ASK100-T113.

Цена - не вопрос вообще.   Эзернет мне не нужен для моего проекта.

Зато наличие экрана и отдельной AGND радует.

38 minutes ago, mantech said:

В версии 1.2 и выше вроде исправили))

У меня вроде 1.1, которые зелёная плата.

39 minutes ago, mantech said:

Какая экзотика, наверно есть только в экранчиках с маленьким разрешением...

Я бы не называл экзотикой интерфейс Serial RGB.

Интересно, что бы вы сказали об LCD-интерфейсах CCIR656 или CCIR601, которые могут нативно передавать YUV вместо RGB  на LCD 🤣

41 minutes ago, mantech said:

Которое далеко не всегда нужно, ИМХО...

Для моего проекта нужно. Красивше будет + какой-то процент разгрузки для CPU (отправка, приём буфера из FIFO трансивера - до 64 кБ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, mantech said:

больше по размеру

Это да.  39x37 против 34x34 у 100ASK.

Замерил габариты модуля RF4463F30 (трансивер) 34x20.  Как раз с модулем 100ASK имеют одинаковую длину.

Так что скорее всего, буду использовать модули 100ASK.  Потому что меньше размерами, размер удобен, и эти модули у меня на руках (в отличие от MYiR, которые надо ещё ждать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

Интересно, что бы вы сказали об LCD-интерфейсах CCIR656 или CCIR601

Жуть!)))

1 час назад, repstosw сказал:

У меня вроде 1.1, которые зелёная плата.

У меня 1.1 вообще глючила после пайки пол-часа, тут уже писал ранее, потом внезапно переболела)))))))

ЗЫ. недавно пришли платы версии 2.1, там наконец-то вывели GPADC наружу, какие-то еше аудиовыходы и поставили i2c еепром на 4кбайта)))  Из минусов - отверстия возле краевых контактов, стало хуже их паять, припой заливается в них((

image.thumb.png.0aa20954ac512396fd6263672d4d1bc2.png

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, repstosw сказал:

LQ035NC111

Ооо, е-мое, посмотрел у него точка размером со слона, я думал на 3.5" разрешение хоть 320х480)))

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, mantech said:

ЗЫ. недавно пришли платы версии 2.1,

Какие там номиналы резисторов в обвесе DC/DC для питания ядра напряжением 0,95 V ?

Че-то попытался посчитать, взял 82 и 51 кОм - выходит  0,97 В

 А если добавить 1 МОм к резистору на 100 к параллельно, то 0,93 В.

 

11 minutes ago, mantech said:

Ооо, е-мое, посмотрел у него точка размером со слона, я думал на 3.5" разрешение хоть 320х480)))

Мне такой именно нужен. И именно 320x240.

Сейчас стоит 480x272, много лишней площади под мои цели.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 минут назад, repstosw сказал:

Какие там номиналы резисторов в обвесе DC/DC для питания ядра напряжением 0,95 V ?

Да хрен знает, они ж 0201 наверно, без надписей, напругу померяю, как платка собранная под рукой будет...

ЗЫ. Схемы на новые версии нет, к сожалению...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, mantech said:

Да хрен знает, они ж 0201 наверно, без надписей, напругу померяю, как платка собранная под рукой будет...

105 и 180 кОм.

Вот тут сказали:

Только 105 кОм  -не видел такого номинала.  Нестандартный.

 

1 hour ago, mantech said:

ЗЫ. недавно пришли платы версии 2.1, там наконец-то вывели GPADC наружу, какие-то еше аудиовыходы и поставили i2c еепром на 4кбайта)))  Из минусов - отверстия возле краевых контактов, стало хуже их паять, припой заливается в них((

На вашей фото совсем не то, что они обещают:

image.png

Здесь контакты выглядят нормально, а в вашем варианте - как-будто скрайбированием не там прошлись, где надо...

 

1 hour ago, mantech said:

У меня 1.1 вообще глючила после пайки пол-часа, тут уже писал ранее, потом внезапно переболела)))))))

В чём именно глючила? Какой характер глюков? Как удалось побороть?

Сколько устройств вы изготовили именно с этой версией платы (зелёная)?  Сколько из них - работают исправно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, repstosw сказал:

Только 105 кОм  -не видел такого номинала.  Нестандартный.

10.5кОм и 18кОм. и будет вам счастье.

 

2 часа назад, repstosw сказал:

На вашей фото совсем не то, что они обещают:

 

Где можно заказать такую плату ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, repstosw сказал:

На вашей фото совсем не то, что они обещают:

Я работал с 3мя версиями, 1.1, которая черная, 1.2 красная без отверстий и 2.1 красная с отверстиями.

Отличия 1.2 от 1.1 доп нога от флешки выведена наружу, остальное, как и 1.1 но пайка более качественная, в 2.1 изменений больше, написал выше...

6 часов назад, repstosw сказал:

В чём именно глючила? Какой характер глюков? Как удалось побороть?

В одной были глюки с видеопортом, в другой с усб, после пайки и первого включения периодически глючила в течении 30-40 мин, после этого глюков не наблюдалось ни в одной из них. В версиях 1.2 и 2.1 не глючило пока нигде, сейчас чуть больше десятка контроллеров на них находятся на тестировании.

4 часа назад, Vasily_ сказал:

Где можно заказать такую плату ?

Мой заказчик покупал на алиэкспрессе, я тут где-то в теме ссылку оставлял...

6 часов назад, repstosw сказал:

как-будто скрайбированием не там прошлись, где надо...

Нет, это настоящие отверстия, краевые контакты там же, где они у пред. версии, по футпринту все совпадает тоже, для чего эти отверстия - х.з. может они туда штыревые контакты хотели впаять и на разъемы поставить)))  Производитель тот же, снизу написано 100ASK

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, mantech said:

В одной были глюки с видеопортом, в другой с усб, после пайки и первого включения периодически глючила в течении 30-40 мин, после этого глюков не наблюдалось ни в одной из них.

Похоже на непропай/холодную пайку.  На цифровых линиях такое работает случайно от фазы Луны наводок с воздуха...

Даже с микро-трещинами дорожки иногда работает, если руку над платой держать рядом  с включенным локальным освещением рабочего места.

 

5 hours ago, Obam said:

Прошлись не там фрезой.

Скорее всего.  Китайцам свойственно выпускать серийную продукцию с прогрессирующей деградацией.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...