Size: a a a

2021 April 07

RC

Roman Clor in Embedded Group
делаю уже, знаю, провтыкал)
источник

ED

Electronics Designer in Embedded Group
Так пересылка по SPI всяко идёт побайтно. Шестнадцатибитный режим есть, но это извращение.
источник

RC

Roman Clor in Embedded Group
я бы включил но ацп 24 бита)
источник

RC

Roman Clor in Embedded Group
__attribute__((always_inline)) __INLINE static void writeRegister16(uint8_t commReg, uint16_t data, uint32_t timeout) {
 data = __builtin_bswap16(data);
 HAL_GPIO_WritePin(AD7731_CS_GPIO_Port, AD7731_CS_Pin, GPIO_PIN_RESET);
 HAL_SPI_Transmit(pAdcHSpi, (uint8_t*) &commReg, 1, timeout);
 HAL_SPI_Transmit(pAdcHSpi, (uint8_t*) &data, 2, timeout);
 HAL_GPIO_WritePin(AD7731_CS_GPIO_Port, AD7731_CS_Pin, GPIO_PIN_SET);
}

__attribute__((always_inline)) __INLINE static void writeRegister24(uint8_t commReg, uint32_t data, uint32_t timeout) {
 data = __builtin_bswap32(data) << 8;
 HAL_GPIO_WritePin(AD7731_CS_GPIO_Port, AD7731_CS_Pin, GPIO_PIN_RESET);
 HAL_SPI_Transmit(pAdcHSpi, (uint8_t*) &commReg, 1, timeout);
 HAL_SPI_Transmit(pAdcHSpi, (uint8_t*) &data, 3, timeout);
 HAL_GPIO_WritePin(AD7731_CS_GPIO_Port, AD7731_CS_Pin, GPIO_PIN_SET);
}
источник

ED

Electronics Designer in Embedded Group
Ну вот.

spi_send(x & 0xFF);
spi_send(x >> 8);
источник

ED

Electronics Designer in Embedded Group
А, вы прям массивом хотите. :) ХЗ, я бы делал отдельными вызовами.
источник

RC

Roman Clor in Embedded Group
там пауза между вызовами выходит
источник

RC

Roman Clor in Embedded Group
если spi может почему нет?
источник

RC

Roman Clor in Embedded Group
тем более потом наверно будут прерывания чтоб ядро не ждало отправку
источник

RC

Roman Clor in Embedded Group
и дма
источник

ED

Electronics Designer in Embedded Group
А вот DMA это аргумент.
источник

RC

Roman Clor in Embedded Group
я пока просто включит ацп пытаюсь
источник

RC

Roman Clor in Embedded Group
все i2c были корпуса, а тут вот spi
источник

r

romanetz in Embedded Group
В арме есть команды соответствующие
источник

r

romanetz in Embedded Group
Которые меняют порядок байт в слове
источник

r

romanetz in Embedded Group
Они intrinsic оформлены, хоть в кейле, хоть в gcc
источник

A

Alexander in Embedded Group
Какой АЦП используешь?
источник

RC

Roman Clor in Embedded Group
ну вот
__builtin_bswap16(net);

htons:
rev16   r0, r0
uxth    r0, r0
bx      lr
источник

RC

Roman Clor in Embedded Group
AD7731
источник

r

romanetz in Embedded Group
Ну да. Буфер по dma приняли/отправили, потом асмом прошлись и переставили порядок байт
источник