Size: a a a

2019 October 19

VL

Vasya Lozhkin in Deus Volt!
TD1 в HIRES 256МГц через TEC тактирует TD0
источник

И

Илья in Deus Volt!
Растяни сигнал и триггер поставь на 3В для начала
источник

VL

Vasya Lozhkin in Deus Volt!
Ладно, всем спасибо. Если отсеим настройку осцилла, значит дело в мк.
источник

VL

Vasya Lozhkin in Deus Volt!
Илья
Растяни сигнал и триггер поставь на 3В для начала
Это не имеет значения. Я уже всяко разно пытался настроить. И с частотой дискретизации играл.
источник

И

Илья in Deus Volt!
Чтобы понять в мк дело или нет можно было просто проверить как осцил видит сигнал без цепи таймера, если ок, то смотреть свой код
источник

VL

Vasya Lozhkin in Deus Volt!
У меня был бзык, что алайсинг мозги делает.
источник

VL

Vasya Lozhkin in Deus Volt!
Решил проверить осциллоскоп, подав на один канал MCLK а на второй SMCLK. Все синхронно)
источник
2019 October 20

Ч

Человек-Даук... in Deus Volt!
Vasya Lozhkin
Не ужели фаза сигнала одного относительно другого плывет? Или в настройках осциллоскопа дело
да
источник

VK

Valentin Kornienko in Deus Volt!
Чем-бы еще заняться в половину третьего ночи. Понять, почему криво работает логика работы отправки в DMA. В Nordic SDK используется EasyDMA работы некоторой периферии. В моем случае это интерйейс SPI. в АПИ нордика сигнатура для передачи N байт выглядит как:
nrfx_err_t nrfx_spim_xfer(nrfx_spim_t     const * const p_instance,
                         nrfx_spim_xfer_desc_t const * p_xfer_desc,
                         uint32_t                      flags)

Где p_xfer_desc дескриптор трназакции на шине.
Структура дескриптора выглядит как:
typedef struct
{
   uint8_t const * p_tx_buffer; ///< Pointer to TX buffer.
   size_t          tx_length;   ///< TX buffer length.
   uint8_t       * p_rx_buffer; ///< Pointer to RX buffer.
   size_t          rx_length;   ///< RX buffer length.
} nrfx_spim_xfer_desc_t;

Что подразумевает на первый взгляд, что размер передаваемого буффера может быть size_t( на деле он потом кастится в uint32 )
НО!
В определенный момент заметил, что увеличивание буффера SPI для DMA ни оказыает никакого эффекта на производительность, даже наоборот.
В чем была причина проблемы?
Для проверки взял тестовый семп от Nordic:
examples\peripheral\nrfx_spim
Возникли подозрения на счет  максимального размера транзакции по SPI с использованием EasyDMA за один раз.
https://devzone.nordicsemi.com/f/nordic-q-a/11635/nrf_drv_spi_transfer-larger-transfer-size
На тестовом примере от нордик взял и расширил
#define TEST_STRING "Nordic123456789012345678901234567890"
до 255 символов и запустил передачу. Получил следующе на логическом анализаторе:
источник

VK

Valentin Kornienko in Deus Volt!
Время полной передачи - 2054 мкс.
источник

VK

Valentin Kornienko in Deus Volt!
Период отправки одного символа: ~8 мкс
источник

VK

Valentin Kornienko in Deus Volt!
Получаем число отправленных символов : 2054/8 - ~ 256.75. С учетом, что на первом скриншоте правый маркер времени отходит от переданных данных на пару десятков мкс - считаем, что было передано ровно 255 пакетов, как и было задумано. Расширим передаваемый пакет до 257 байт.
источник

VK

Valentin Kornienko in Deus Volt!
А причина проста. EasyDMA не поддерживает отправку более 255 байт за одну посылку. Таким образом все мои попытки наращивать размер буффера DMA для отправки не приводили ни к какому увеличению производительности.
источник

VK

Valentin Kornienko in Deus Volt!
Переслано от Valentin Kornienko
Ouch.... А где же все остальное?
источник

V

V in Deus Volt!
Valentin Kornienko
А причина проста. EasyDMA не поддерживает отправку более 255 байт за одну посылку. Таким образом все мои попытки наращивать размер буффера DMA для отправки не приводили ни к какому увеличению производительности.
крутое исследование! интересно, как с остальными интерфейсами
источник

VK

Valentin Kornienko in Deus Volt!
V
крутое исследование! интересно, как с остальными интерфейсами
Остальную буду смотреть позже, как BLE запущу
источник

VK

Valentin Kornienko in Deus Volt!
По BLE  думаю огород камней соберу. Там обещает быть весело
источник

V

V in Deus Volt!
так оно ж искоропки есть в примерах или у тебя что-то кастомное?
источник

V

Vladimir in Deus Volt!
Народ, подскажите при разводке w5500 (эзернет контроллера) дороги до разъёма RG45 надо делать одинаковой длинны?
источник

АВ

Александр Владимиров... in Deus Volt!
Vladimir
Народ, подскажите при разводке w5500 (эзернет контроллера) дороги до разъёма RG45 надо делать одинаковой длинны?
Конечно, нужно разводить их как дифференциальные пары
источник