whale 6 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба В stm32 ? Чтобы тупо слала данные без проверки ack 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба А это в каком интерфейсе? В I2C это тупо невозможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба whale, с таким крайне информативным постом вы проявляете избыточное уважение к аудитории, поэтому ждите гору крайне толковых ответов 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Just now, EdgeAligned said: I2C это тупо невозможно Возможно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 17 мая, 2023 Опубликовано 17 мая, 2023 (изменено) · Жалоба Например, как? В I2C Master Transmitter получение ACK обрабатывается аппаратно, и если не получено состояние ACK, не будут выставлены биты TxE и BTF. Логически это и объяснимо - если подчиненное устройство не ответило, то соединение должно быть завершено - устройство не может принимать новые данные. Master transmitter When the acknowledge pulse is received, the TxE bit is set by hardware and an interrupt is generated if the ITEVFEN and ITBUFEN bits are set. If TxE is set and a data byte was not written in the DR register before the end of the last data transmission, BTF is set and the interface waits until BTF is cleared by a read from I2C_SR1 followed bya write to I2C_DR, stretching SCL low. 26.6.6 I2C Status register 1 (I2C_SR1) Bit 7 TxE: Data register empty (transmitters) 0: Data register not empty 1: Data register empty – Set when DR is empty in transmission. TxE is not set during address phase. – Cleared by software writing to the DR register or by hardware after a start or a stop condition or when PE=0. TxE is not set if either a NACK is received, or if next byte to be transmitted is PEC (PEC=1) Note: TxE is not cleared by writing the first data being transmitted, or by writing data when BTF is set, as in both cases the data register is still empty. Bit 2 BTF: Byte transfer finished 0: Data byte transfer not done 1: Data byte transfer succeeded – Set by hardware when NOSTRETCH=0 and: – In reception when a new byte is received (including ACK pulse) and DR has not been read yet (RxNE=1). – In transmission when a new byte should be sent and DR has not been written yet (TxE=1). – Cleared by software reading SR1 followed by either a read or write in the DR register or by hardware after a start or a stop condition in transmission or when PE=0. Note: The BTF bit is not set after a NACK reception The BTF bit is not set if next byte to be transmitted is the PEC (TRA=1 in I2C_SR2 register and PEC=1 in I2C_CR1 register) Впрочем, когда откроете для себя DMA или хотябы прерывания, появятся новые интересные возможности. Изменено 17 мая, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Если тупо, то всё возможно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Если тупо - то конечно. Тупо можно вообще тупо забить. А ежели по-уму, то можно открыть для себя возможности DMA-передачи и предоставить его логике смотреть за передачей байтов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба 5 minutes ago, EdgeAligned said: Если тупо - то конечно. Тупо можно вообще тупо забить. А ежели по-уму, то можно открыть для себя возможности DMA-передачи и предоставить его логике смотреть за передачей байтов. Можно и DMA тупо открыть. Всё от количества тупости зависит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 17 мая, 2023 Опубликовано 17 мая, 2023 (изменено) · Жалоба Где то видел тему у человека HAL слал без ответа ack, например нужно связаться с уст-во не поддерживающим ack. Можно конечно програмно написать i2c но это на крайний случай. Как раз HAL работает через прерывания типа HAL_I2C_MASTER_TRANSMIT_IT Изменено 17 мая, 2023 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vov4ick 39 17 мая, 2023 Опубликовано 17 мая, 2023 · Жалоба Предположу что автор подключает что-то вроде китайского контроллера СД дисплея или клавиатуры с интерфейсом, напоминающим гибрид I2C и SPI, то есть как бы I2C, но без адреса и подтверждения и с растягиванием импульсов. Реализуется ногодрыгом и конечным автоматом, там скорость не нужна. На сайтах ардуинщиков есть исходники, но лучше сделать самому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 18 мая, 2023 Опубликовано 18 мая, 2023 · Жалоба Без адреса и бита подтверждения - это тот же самый SPI, только с одной линией данных, помеченной SDA. Она может быть как однонаправленной (только к дисплею), так и двунаправленной (на передачу/прием). И SPI может быть 9-битным, когда этот доп. бит используется для переключения типа передаваемых данных. Простые Ардуины не могут в аппаратом модуле SPI передать 9 бит, поэтому и делают программную реализацию. Большинство СТМок имеют аппаратный SPI с настраиваемым числом бит в посылке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 18 мая, 2023 Опубликовано 18 мая, 2023 · Жалоба 1 час назад, EdgeAligned сказал: Без адреса и бита подтверждения - это тот же самый SPI А еще без START и STOP. ("Не в лотерею, а в очко, не "Волгу", а 25 рублей, не выиграл, а проиграл, а так все сходится"). 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться