whale 3 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба Где вообще свет в конце тунелля ) Вот такая штука всегда выводит 16 тактов, на бит DS не реагирует, это так и должно быть и для чего тогда DS ? те вывести один байт невозможно ? SPI1->CR1 = 0; SPI1->CR2 = 0; SPI1->CR1 = 1<<SPI_CR1_LSBFIRST_Pos // MSB передается первым | 1<<SPI_CR1_SSM_Pos // Программное управление ведомым отключено | 1<<SPI_CR1_SSI_Pos // Значение этого бита принудительно подается на NSS | 0x02<<SPI_CR1_BR_Pos // 01= F_PCLK/4 = 64/4=16мгц | 1<<SPI_CR1_MSTR_Pos; // Режим Master SPI1->CR2 |= (0x0111<<SPI_CR2_DS_Pos); // длинна пакета 8 бит SPI1->CR1 |= 1<<SPI_CR1_SPE_Pos; // вкл SPI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба 15 минут назад, whale сказал: 0x0111<<SPI_CR2_DS_Pos 0x111 = 1 0001 0001 в бинарном виде или 273 в десятичном. Явно тут у вас ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба 14 минут назад, whale сказал: Где вообще свет в конце тунелля ) Если вы хотите передать 8 и менее бит, то в DR вы должны записывать не как 16-битный регистр, а как в 8-битный Типа такого *(uint_8t *)&SPI1->DR = 0x12 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 3 5 февраля, 2021 Опубликовано 5 февраля, 2021 (изменено) · Жалоба Just now, MrBearManul said: 0x111 = 1 0001 0001 в бинарном виде или 273 в десятичном. Явно тут у вас ошибка. Там было цифра 7 случайно сюда запостил в таком виде Just now, adnega said: Если вы хотите передать 8 и менее бит, то в DR вы должны записывать не как 16-битный регистр, а как в 8-битный Типа такого *(uint_8t *)&SPI1->DR = 0x12 Красота страшная сила ! работает ! Правда тогда вопрос а если 5 или 4 бита надо ? ставим DS на 4 бита все равно выводит 8 Изменено 5 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 162 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба 42 минуты назад, adnega сказал: Если вы хотите передать 8 и менее бит, то в DR вы должны записывать не как 16-битный регистр, а как в 8-битный... Судя по RM, это относится только к приему - читать кратно FIFO Rx Threshold.При передаче лишние биты обрезаются, опять же, как пишет мануал в описании DR Цитата Note: Data is always right-aligned. Unused bits are ignored when writing to the register, and read as zero when the register is read. The Rx threshold setting must always correspond with the read access currently used. А не, нифига. У них там чуть выше другое объяснение есть: действительно DR чувствителен к типу доступа. P.S. Кстати, у ТС еще и режим выбран LSB-first, хотя в комментарии он пишет, что требуется MSB-first... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 3 5 февраля, 2021 Опубликовано 5 февраля, 2021 (изменено) · Жалоба Just now, Arlleex said: P.S. Кстати, у ТС еще и режим выбран LSB-first, хотя в комментарии он пишет, что требуется MSB-first... Там тоже был нолик но в процессе эксперимента записался 1 ) Just now, Arlleex said: Судя по RM, это относится только к приему - читать кратно FIFO Rx Threshold. При передаче лишние биты обрезаются, опять же, как пишет мануал в описании DR У меня обрезаются на передачу только если как adnega сделать иначе шурует по 16 тактов Изменено 5 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 162 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба Я бы тогда саму структуру SPI_TypeDef переделал на typedef struct { __IO uint32_t CR1; __IO uint32_t CR2; __IO uint32_t SR; __IO union { uint8_t b; // byte access uint16_t h; // half-word access uint32_t : 32; }DR; __IO uint32_t CRCPR; __IO uint32_t RXCRCR; __IO uint32_t TXCRCR; __IO uint32_t I2SCFGR; __IO uint32_t I2SPR; }SPI_TypeDef; и к DR обращался ситуативно-правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 3 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба Я с структурами не дружу, мне асемблер ближе ) Всем спасибо, все заработало, вдруг кому еще пригодиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 5 февраля, 2021 Опубликовано 5 февраля, 2021 · Жалоба 32 минуты назад, whale сказал: Я с структурами не дружу, мне асемблер ближе ) А исходинк-то у вас на Си... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 3 5 февраля, 2021 Опубликовано 5 февраля, 2021 (изменено) · Жалоба del Spoiler Изменено 6 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться