Размер приемного буфера UART
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
Размер приемного буфера UART
В РЭ К1921ВГ015 указано, что при приеме байтов UART, может быть вызвано прерывание, используя IFLS регистр порога прерывания по заполнению буфера в режиме FIFO. Если IFLS=0, то прерывание генерируется при заполнении 1/8 буфера. Если IFLS=1, то при заполнении 1/4 буфера и т.д. В РЭ не указано какой размер буфера, в долях от которого поднимается прерывание?
-
RabidRabbit
- Сообщения: 162
- Зарегистрирован: 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 записей (байт).
-
durimar_13
- Сообщения: 11
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Размер приемного буфера UART
Здравствуйте! Мои "5 копеек". Заполненность буфера FIFO уменьшается при чтении из него. Если он заполнен, при приходе нового байта возникнет прерывание. Буфер можно сбросить, если выключить UART. Я так делал, чтобы очистить "хвост" сообщения. Но я плохой программист. 
С уважением, Виктор.
