Порядок битов вывода PIO RP2040
Предположим, у меня есть (очень упрощенная) программа PIO, подобная следующей, которая сдвигает 8 бит за раз из
uint32
из выходного сдвигового регистра (OSR) в регистр X и записывает все 8 бит параллельно на набор последовательных выводов.
.wrap_target
out x, 8
mov pins, x
.wrap
В техническом описании RP2040 говорится:
Наименее значимый бит данных OUT отображается в PINCTRL_OUT_BASE, и это отображение продолжается для битов PINCTRL_OUT_COUNT, завершаясь после GPIO31.
Это кажется достаточно ясным в том смысле, что если мой код пишет
0x01010101
в TX FIFO, я бы ожидал, что каждый проход через цикл PIO будет записывать 1 в PINCTRL_OUT_BASE и 0 на другие контакты.
Но что будет, если значение, скажем,? В даташите говорится
Направление сдвига может быть влево / вправо, настраивается процессором через регистры конфигурации.
Означает ли выбор сдвига влево, что первый проход приведет к записи 1 на 4 последовательных контакта, начиная с PINCTRL_OUT_BASE? Или небольшой порядок байтов в модели памяти ARM означает, что байт 0x01 будет первым, извлеченным из OSR?
Что мне действительно нужно здесь, так это понять, как визуализировать биты в OSR. Я должен думать о
0x0f070301
в качестве
00001111 00000111 00000011 00000001
или наоборот?
Спасибо!