Size: a a a

2021 April 07

RC

Roman Clor in Embedded Group
а вот и магия нашлась gcc
источник

К1

Ком 123 in Embedded Group
Вообще такого в gcc много. Тот же popcount чего стоит. Имхо, builtin в gcc покрывает 90% таких задач.
источник

RC

Roman Clor in Embedded Group
плохо что надо крос компиляцию делать для keil
источник

RC

Roman Clor in Embedded Group
а обратная есть функция? для полученных данных
источник

RC

Roman Clor in Embedded Group
или я туплю и она и подходит)
источник

К1

Ком 123 in Embedded Group
А почему не должна подходить?)
источник

RC

Roman Clor in Embedded Group
да я всю ночь с этим spi воевал, закипел немного. Обидный баг, уровня float  = int/int (
источник

К1

Ком 123 in Embedded Group
А в чём баг-то?
источник

К1

Ком 123 in Embedded Group
Как выше сказали, порядок бит должен быть тот же, вот эндиан может отличаться. Может не в порядке бит дело?
источник

RC

Roman Clor in Embedded Group
еще раз с битами все хорошо, порядок слов обратный
источник

RC

Roman Clor in Embedded Group
ну на картинке видно
источник

RC

Roman Clor in Embedded Group
ждем 15 - 0 идет 7-0 15-8
источник

ED

Electronics Designer in Embedded Group
1. Порядок бит в посылке SPI не зависит от порядка бит в памяти. Он зависит от логики SPI.

2. ЕМНИП в SPI STM32 есть бит LSBFIRST, который делает то, что вам надо. Проверьте в RM, мне сейчас не слишком удобно его открывать.

3. Порядок бит можно перевернуть софтово, способов много.
источник

RC

Roman Clor in Embedded Group
да че все к БИТАМ пристали))) БАЙТЫ БАЙТЫ лажают)
источник

ED

Electronics Designer in Embedded Group
А. Так а тогда в чем проблема?
источник

RC

Roman Clor in Embedded Group
Я вот правильно понимаю для 24бит
data = __builtin_bswap32(data) << 8;
источник

RC

Roman Clor in Embedded Group
да все уже)
источник

RC

Roman Clor in Embedded Group
вроде😅
источник

ED

Electronics Designer in Embedded Group
x & 0xFF, x >> 8
источник

A

Alexander in Embedded Group
Если у тебя эндианности приемника/передатчика отличаются - используй макросы HTON / NTOH для типов данных более 1 байта.

Ну либо ты тупишь и не знаешь разницы little endian/big engian и способа раскладывания многобайтных переменных в памяти.
источник