pvvx
Активный участник сообщества
У вас вопрос был про Таймеры. По ним всё есть. PWM же реализован почти так-же, как в D2000, но коммутация выводов сделана по другому - SoC то другой и это к стандартным моделям IP не относится.@pvvx, благодарю за информацию.
Структура регистров в rtl8195a_timer.h соответствует описанию 1-го таймера в D2000 (их в доках всего 2).
Обращения из кода к структуре через макросы HAL_TIMER_READ32(addr) и HAL_TIMER_WRITE32(addr, value) в основном происходит через функцию HalTimerInitRtl8195a_Patch(), в которой в качестве адреса используется TIMER_INTERVAL*pHalTimerAdap->TimerId + смещение требуемого регистра.
TIMER_INTERVAL*pHalTimerAdap->TimerId для 8 значений TimerId (0-7) даёт 8 адресов:
0x40002000 для TimerId=0; //RTC
0x40002014 для TimerId=1; //
0x40002028 для TimerId=2; // PWM_3
0x4000203c для TimerId=3; // PWM_0
0x40002050 для TimerId=4; // PWM_1
0x40002064 для TimerId=5; // PWM_2
0x40002078 для TimerId=6; //
0x4000208c для TimerId=7. //
Дамп регистров снятый в JLink при инициализации мною PWM сигнала на PC_2 верно отображает регистры для TimerId=5, а также инициированный с TimerId=1 таймер. При этом вся структура таймерных регистров повторяется с шагом 0x100 (4 блока).
В принципе это всё, что нарыл в SDK. Это ни на грамм не приблизило меня к аппаратному управлению состоянием pwm пина от таймера в режиме PWM Mode.
Поэтому, если это возможно, хотелось бы получить помощь в конфигурации предделителя(-лей) таймеров и как выходы таймеров подключить в пинам?
Очень хочется иметь аппаратную реализацию 2-х выходов с импульсом в 1 мксек следующим с частотой от 50 Гц до 50 кГц.
Я вот тоже не нашел, где переключается вход GATE таймера на внешний пин. А это вроде есть, но в HAL не задействовано и нет нив одной прошивке хоть сторонней, в отличии от PWM. PWM вообще расписан в SDK вдоль и поперек до уровня API, работает на 100% и ставятся все возможные режимы. Не понимаю интереса в переписывании того, что работает и нормально...
Переключение таймеров на более высокую частоту тактирования пока не найдено и его может и не быть. Что там ещё можно менять?
50Гц дцать бит у вас выйдет, но выше - фигу. (если только найдете переключение тактирования таймеров на PLL)
Остается делать PWM на I2S - там за 6 МГц и он умеет циклически выводить по DMA непрерывно. Для звука - достаточно (см. MP3 - там два канала звука 48 кГц в 96 бит ШИМ+адаптивка)
Или стучитесь в Realtek и подписывайте NDA с ними
Последнее редактирование: