AD9850 데이터시트를 봤는데 AD9834와 유사하게 프로그래밍하면 될 것같습니다.
X-TAL : 2^32 = FREQ : x의 비례식에서 x를 풀어내어 정수형으로 형변환하여 컨트롤워드와 함께 SPI 또는 패러렐 방식으로 AD9850의 레지스터에 보내는 것이 다일 것같습니다.
예컨데,
X-TAL : 125Mhz
2^32 = 4,294,967,296
FREQ (희망주파수) = 20Mhz일 경우 위의 비례식에 의거, x는 687,194,767.36인데, 정수부분인 687,194,767를 이진화하여 컨트롤 워드인 0x04와 합쳐 총 40비트 (데이터 32비트 + 8비트 컨트롤워드)를 통신하면 될 것같습니다. 뭐 간단히는 2^32 / X-TAL을 상수로 define해서 희망주파수와 곱해도 되겠죠.
데이터시트에 정확한 기술이 없어서 분명치는 않습니다만, 타이밍챠트 상 MSB를 먼저 보내는 것으로 보입니다 [추후 확인요망].
===================================================================================================================
[수정사항]
AD9851 기준으로 시리얼 통신을 할 때는
1. 컨트롤워드를 0x00을 준다.
2. LSB -> MSB 순으로 통신한다.
패러렐 통신을 할 때는 컨트롤 워드가 달라지고, 비트순서도 반대입니다 [MSB를 먼저 보내고 LSB를 최후에 보내는 방식입니다].
첫댓글 현송님. 상세한 설명감사합니다. MSB부터 차곡차곡 채워 넣는 방식인 것 같습니다. 어셈에 비해 C 에서는수치 계산을 일일히 하진 않아도 되어 홀가분한 기분입니다.