ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
98597
Argon (06.09.2007 09:45, просмотров: 4780)
Может, кто подскажет правильную идеологию работы с SSP в LPC21xx? У меня получаются слишком большие накладные временнЫе расходы. Процессор работает на частоте 33.178 МГц. Инициализировал SSP на 16.589 МГц, без прерываний. Запись произвожу след. образом: <c> void SSP_Write(byte data) { while(!SSPSR&BIT1); //ожидать пока TxFIFO полный while(SSPSR&BIT4); //ожидать пока идет передача SSPDR = data; } </c> В бесконечном цикле произвожу запись байта в порт. При этом по осциллографу смотрю линию SCK. В результате непосредственно передача: 460 нс, промежуток между передачами 1100 нсек! Т.е. более чем в 2 раза больше самой передачи. Неужели на опрос битов в SSPSR тратится такое время? Вообще также есть затраты на вызов функции и организацию бесконечного цикла. Есть мысли как-то задействовать TxFIFO, группируя посылки. Тогда "накладные временнЫе расходы" будут размазаны по длине всего FIFO, т.е. на 8 элементов. Может, еще какой-то вариант есть? Использовать прерывание, видимо, не получится, т.к. по SSP прерывания специфические: 1. RxFIFO хотя бы наполовину полон 2. TxFIFO хотя бы наполовину пуст а не получится их использовать потому, что бывает необходимо посылать/принимать меньше, чем 4 байта.