Размер приемного буфера UART
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
Размер приемного буфера UART
В РЭ К1921ВГ015 указано, что при приеме байтов UART, может быть вызвано прерывание, используя IFLS регистр порога прерывания по заполнению буфера в режиме FIFO. Если IFLS=0, то прерывание генерируется при заполнении 1/8 буфера. Если IFLS=1, то при заполнении 1/4 буфера и т.д. В РЭ не указано какой размер буфера, в долях от которого поднимается прерывание?
-
RabidRabbit
- Сообщения: 136
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Размер приемного буфера UART
Что такое РЭ я не знаю, но в РП (Руководство пользователя) пишут, что
В состав приемопередатчика входят два буфера типа FIFO. Буфер приемника имеет
разрядность 12, буфер передатчика – разрядность восемь. Каждый буфер может хранить до
32 байт данных, и каждый буфер может быть сконфигурирован (программно) как
32-байтный или как однобайтный.
Re: Размер приемного буфера UART
Да, Руководство пользователя, не Руководство по эксплуатации, прошу прощения за неточность.
Проверил отдельной программой заполнение буфера и при установке прерывания по заполнению буфера на 1/8 прерывание происходит при получении 4 байт.
Выяснилось, что буфер остается заполненным и после первых 4 байт прерывания вызываются после каждого нового 1 байта. Это и вызвало изначальный вопрос, что первое прерывание приходит через 4 байта (при конфигурации прерывания 1/8 размера буфера), потом прерывания приходят после каждого 1 байта. Теперь причина понятна, надо чистить буфер после каждого прерывания.
Теперь надо разобраться как чистить буфер, если прочтение буфера не очищает буфер автоматически.
Проверил отдельной программой заполнение буфера и при установке прерывания по заполнению буфера на 1/8 прерывание происходит при получении 4 байт.
Выяснилось, что буфер остается заполненным и после первых 4 байт прерывания вызываются после каждого нового 1 байта. Это и вызвало изначальный вопрос, что первое прерывание приходит через 4 байта (при конфигурации прерывания 1/8 размера буфера), потом прерывания приходят после каждого 1 байта. Теперь причина понятна, надо чистить буфер после каждого прерывания.
Теперь надо разобраться как чистить буфер, если прочтение буфера не очищает буфер автоматически.
Re: Размер приемного буфера UART
Добрый день!
В состав приемопередатчика входят два буфера типа FIFO. Буфер приемника имеет
разрядность 12, буфер передатчика – разрядность восемь. Каждый буфер может хранить до
32 байт данных, и каждый буфер может быть сконфигурирован (программно) как
32-байтный или как однобайтный.
Т.е. буфер FIFO хранит 32 записи, а 1/4 буфера - 32/4 = 8 записей (байт).
В состав приемопередатчика входят два буфера типа FIFO. Буфер приемника имеет
разрядность 12, буфер передатчика – разрядность восемь. Каждый буфер может хранить до
32 байт данных, и каждый буфер может быть сконфигурирован (программно) как
32-байтный или как однобайтный.
Т.е. буфер FIFO хранит 32 записи, а 1/4 буфера - 32/4 = 8 записей (байт).
