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

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

2 minutes ago, GenaSPB said:

Да развели бы давно свою плату.. в чем проблема то?

Проблема побороть свою лень  развести плату полностью для этого. 🤣

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

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


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

Берёте мой проект (p-cad), отрезаете лишнее... день работы 

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


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

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

Зато на материнской плате выведена гребёнка с SPI. И в структурной схеме он явно указан.

Это не факт, там 2 сд контроллера, мультиплексированы с спи, и не факт, что там вместо сд карты стоит еммс, а вторая, внешняя как раз с вашим спи))) 

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

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

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


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

22 minutes ago, GenaSPB said:

Берёте мой проект (p-cad), отрезаете лишнее... день работы 

Вместо PCAD  использую Altium, причем довольно древней версии.

Тогда проще взять Altium-файлы китайцев на модуль 100ASK-T113 и его изменить.

 

17 minutes ago, mantech said:

Это не факт, там 2 сд контроллера, мультиплексированы с спи, и не факт, что там вместо сд карты стоит еммс, а вторая, внешняя как раз с вашим спи))) 

Сконвертировал из Altium в картинку.  Да.   SPI  не выведен.  Мне нужны  PC2,PC3,PC4 и PC5 (SCLK, nSel, SDI, SDO соответственно).

На макете с платой Mango Pi этот вопрос решался припаиванием проводков с посадочного места SPI NAND, которой не было.

 

RP-T113-C_pinout.thumb.png.0fa7e0803bf3c2bd57043678542c7d5e.png

 

17 minutes ago, mantech said:

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

Могу себе позволить это только на стадии макетирования и когда ещё не раскурил аппаратный SPI.

В релизе стремлюсь к аппаратной эстетике.  ИМХО ногодрыг SPI - аппаратное уродство. :biggrin:

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

 

Макет моего проекта взял много ног с платы mangoPi:    дисплей RGB, камера DVP, SD-карта, SPI(аппаратный),  кнопки LRADC, TWI для настройки камеры(тоже аппаратный)

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

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


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

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

В релизе стремлюсь к аппаратной эстетике.  ИМХО ногодрыг SPI - аппаратное уродство. :biggrin:

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

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


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

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

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

кривой стартер ещё тоже хорош - вдруг энергии нет а ехать надо 🙂

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


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

43 минуты назад, sasamy сказал:

кривой стартер ещё тоже хорош

Разумеется)) 

Кстати, с таймерами(PWM) в Т113 кто нибудь работал? Сначала думал это тупой ШИМ, как в старых аллвиннерах, но тут удивило, что он довольно навороченный, мне надо выдать на ножку заданную частоту, как я понял, 24МГц там идет на грубый делитель 1-256, затем на точный 8и битный делитель, потом на 16 битный счетчик ШИМ, у которого задается отсечка по импульсу и по паузе в соотв. регистрах. Если мне нужен меандр, то я могу задать в этих регистрах одинаковое число.

Вопрос №1 - какой диапазон 1-32767  , 1-65535  или чтоб их сумма была не более 65535?

Вопрос №2 - если я задам скажем 1 и 1 то частота на выходе будет равна входной \ 2?

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

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


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

7 hours ago, mantech said:

Кстати, с таймерами(PWM) в Т113 кто нибудь работал?

Работал.

Делал подсветку для LCD с переменной яркостью.

И два противофазных выхода для антенного переключателя.

Контроль вёл визуально - понизил частоту почти до 1 Гц и смотрел как моргают светодиоды. Таким образом,  эмпирически вывел соотношения между делителями и реальной частотой.

 

8 hours ago, GenaSPB said:

Вообще-то p-cad затаскивается в altium автоматически

и что, прям в Altium v.6 затащит?

У меня половина файлов открываются пустыми, ибо версию альтиума по-выше мой ПК не вывозит... Приходится использовать относительно старый альтиум

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

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


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

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

Контроль вёл визуально - понизил частоту почти до 1 Гц

Использовали только делители или сам 16и битный регистр ШИМ? С помощью него можно делить частоту?

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


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

1 hour ago, mantech said:

Использовали только делители или сам 16и битный регистр ШИМ? С помощью него можно делить частоту?

Использовал всё. Потому что нужно было проверить переключения на ~1 Гц.

void PWM_InitRF(void)
{
 u32 period=4; //366*2;

 PWM_PCCR23=(0<<7)| /*8*/ 0 ;         //HOSC(24 MHz), PWM23_CLK_DIV_M=1 => 24 MHz/1 = 24 MHz
 PWM_PCGR&=~(3<<18);          //PWM2_CLK_BYPASS and PWM3_CLK_BYPASS not bypass

 PWM2_PCR=(0<<8)|( /*256*/ 2 -1);      //PWM Active State = Low  level, PWM pre-scale K=2 => 24 MHz/2 = 12 MHz clock for PWM2
 PWM3_PCR=(1<<8)|( /*256*/ 2 -1);      //PWM Active State = High level, PWM pre-scale K=2 => 24 MHz/2 = 12 MHz clock for PWM3

 PWM2_PPR=((period-1)<<16)|(period/2); //entire cycles=100, active cycles=duty in %
 PWM3_PPR=((period-1)<<16)|(period/2); //entire cycles=100, active cycles=duty in %

 PWM_PCGR|=(3<<2);            //PWM2_CLK_GATING and PWM3_CLK_GATING pass

 PWM_PER|=(3<<2);             //PWM2_EN and PWM3_EN enable
}

 

Итоговая частота зависит от:  PCCR, PCR и PPR.

В приведённом коде - меандр, 50%.

Закомментированные значения - для частоты около 1 Гц (контроль вёл по двум светодиодам)

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

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


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

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

Использовал всё. Потому что нужно было проверить переключения на ~1 Гц.

Понял, спасибо, надо будет попробовать...

 

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


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

Кто-то может провести ликбез по работе с тачем экрана через TPADC?

Ниже код как запускаю.

Использую два канала - 0 и 2. Выставляю прерывания по нажатию.

Срабатывают прерывания по нажатию и по отпусканию даже если прерывания не разрешены.

Данные странные получаю.

Единственное, что выглядит корректным - это то, что при нажатии срабатывают прерывания.

__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.

	//if (BIT_GET(status, 16))		// FIFO_DATA_PENDING

	if (BIT_GET(status, 0))
	{
		uart_print("\n\r TP_DOWN_CH0=");	u32touart0(TPADC->TP_DATA_REG);
		uart_print("\n\r TP_DOWN_CH2=");	u32touart0(TPADC->TP_DATA_REG);
	}

	if (BIT_GET(status, 1) )
	{
		uart_print("\n\r TP_UP_CH0=");	u32touart0(TPADC->TP_DATA_REG);
		uart_print("\n\r TP_UP_CH2=");	u32touart0(TPADC->TP_DATA_REG);
	}
}

__WEAK void TPADC_Init(void)
{
	CCU_SetTPADC(CCU_TPADC_SRC_HOSC);

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

	TPADC->TP_CTRL_REG3 = 0x80000FFF;		// Default
	TPADC->TP_CTRL_REG3 = 6; 				// Set FILTER_EN + TYpe 8/4

	TPADC->TP_INT_FIFO_CTRL_REG = (0x3 << 8);		// TP_FIFO_TRIG_LEVEL = 3
	//BIT_SET(TPADC->TP_INT_FIFO_CTRL_REG, 17); 		// TP_OVERRUN_IRQ_EN
	BIT_SET(TPADC->TP_INT_FIFO_CTRL_REG, 16); 		// TP_DATA_IRQ_EN
	//BIT_SET(TPADC->TP_INT_FIFO_CTRL_REG, 7); 		// TP_DATA_DRQ_EN
	//BIT_SET(TPADC->TP_INT_FIFO_CTRL_REG, 1); 		// TP_UP_IRQ_EN
	BIT_SET(TPADC->TP_INT_FIFO_CTRL_REG, 0); 		// TP_DOWN_IRQ_EN

	BIT_CLEAR(TPADC->TP_CTRL_REG1, 4); 		// Set TP Mode
	BIT_SET(TPADC->TP_CTRL_REG1, 2); 		// Set ADC_CHAN2_SELECT
	BIT_SET(TPADC->TP_CTRL_REG1, 0); 		// Set ADC_CHAN0_SELECT
	BIT_SET(TPADC->TP_CTRL_REG1, 5); 		// Set TP_EN

	SetHandlerIRQ(TPADC_IRQn, TPADC_IRQHandler, PRI_SYS, 0);
}

void TPADC_Calibration(void)
{
	BIT_SET(TPADC->TP_CTRL_REG1, 7); 		// 1: Start calibration, it is cleared to 0 after calibration
	while (BIT_GET(TPADC->TP_CTRL_REG1, 7)) __NOP();
}

 

при нажатии получаю типа такого

 TP_DOWN_CH0=000004B9
 TP_DOWN_CH2=0000079E
 TP_UP_CH0=00000EA0
 TP_UP_CH2=00000E23

....

 TP_DOWN_CH0=00000EA3
 TP_DOWN_CH2=00000E29
 TP_UP_CH0=00000EA2
 TP_UP_CH2=00000E28

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

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


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

видимо, надо читать все значения RXA, тогда последние выглядят логично. 

Так же получается, что прерывание по Down - просто сигнализирует нажатие :

флаг Down == 1, Idle == 1, RXA == 0

прерывание по UP срабатывает вне зависимости разрешено ли оно.

при настройках выше выдает 16 пар значений 

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


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

4 hours ago, vasilius said:

Кто-то может провести ликбез по работе с тачем экрана через TPADC?

 

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

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


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

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

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

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

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

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

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

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

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

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