Решил сделать универсальный прибор (генератор сигналов, измеритель резонансов и.т.д.) на blue pill и AD9850. Синтезатор частот купил в Амперкоте.
Подсоединил - не получается. Ну решил повторить для начала известную схему. Присоединил к Ардуино (хоть и не люблю ее - вспоминал вот распиновку...) на макетке . Все равно на выходе - ничего.
Вот скетч.
Спойлер
#define W_CLK PD2 // connect to AD9850 module word load clock pin (CLK)#define FQ_UD PD3 // connect to freq update pin (FQ)
#define DATA PD4 // connect to serial data load pin (DATA)
#define RESET PD5 // connect to reset pin (RST).
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); //after each bit sent, CLK is pulsed high
}
}
// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000; // note 125 MHz clock on 9850
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000); // Final control byte, all 0 for 9850 chip
pulseHigh(FQ_UD); // Done! Should see output
}
void setup() {
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); // this pulse enables serial mode - Datasheet page 12 figure 10
}
void loop() {
sendFrequency(2000);
delay(1000);
}
Что делать дальше? Кварц проверить не могу - осциллограф тянет только до 10 Мгц, а там - 125 Мгц. Потенциометр крутил, плату протирал изопропанолом.
Отзовитесь пожалуйста. Надеюсь все же где-то "косяк" или я что-то упустил. Плата дорогая все же...



