Спасибо Atmellnside! Похоже что код рабочий и очень похож на классическую реализацию софтового SPI 8 бит или в данном случае можно меньше, но как передать с помощью этого кода 21 бит для lmx2306.Путем простой подстановки думаю не получится. Это получается надо unsigned long int объявлять на 32 бита,а куда деть 11 бит, то есть как от них избавиться? Наверно надо битовое поле применить потом сшить переменную long и как то передать ее предварительно избавившись от лишних 11 бит. Вот еще видел пример,предварительно считают и формируют слово 21 бит для синтезера, далее извлекают по 8 бит и остаток 5 бит - передают в 3 циклах один за другим, в каждом цикле задают свое количество проходов 8-8-5. А вообще я недоумении получается с подобными микросхемами в аппаратном spi невозможно работать?