Да, можно попробывать перепаять. У меня AD9951, пока не стал использовать IO UPDATE информация не перезаписывалась из буфера в регистр.
Но в моём случае он используется только как входной.
Вот может поможет как я её инициализирую:
write_cfr1(0x00000200);
// биты 31:27 - не используются(0)
// бит 26 - не важно, тк ARR не используется(0)
// бит 25 - Shaped onoff keying - не используется(0)
// бит 24 - не важно, тк Shaped onoff keying - не используется(0)
// бит 23 - автоматическая синхронизация нескольких AD9951 - отключена(0)
// бит 22 - ручная синхронизация нескольких AD9951 - отключена(0)
// биты 21-14 - не используются(0)
// бит 13 - автоматическая очистка фазы при загрузке частоты - отключена(0)
// бит 12 - используется cos(0)
// бит 11 - не используется (0)
// бит 10 - очистка аккумулятора фазы - не используется(0)
// бит 9 - микросхема используется в трёхпроводном режиме (1)
// бит 8 - MSB first (0)
// бит 7 - Digital power down - не нужно (0)
// бит 6 - Не используется (0)
// бит 5 - DAC Power-down - не нужно(0)
// бит 4 - Clock-input power-down - не нужно(0)
// бит 3 - Режим External-power down - не важно, тк не используется (0)
// бит 2 - Не используется (0)
// бит 1 - SYNC_CLK active(0)
// бит 0 - Не используется (0)
write_cfr2(0x000000a7);
// биты 31:24 - не используются (0)
// биты 23:16 - не исподьзуются (0)
// биты 15:12 - не используются (0)
// бит 11 - High speed sync - не нужно(0)
// бит 10 - Hardware manual sync - не нужно(0)
// бит 9 - CRYSTAL OUT - inactive - не нужно (0)
// бит 8 - не используется (0)
// бит 7-3 - умножитель опорной частоты - 20=0x14, 16*20=320 MHz
// бит 2 - 1 - тк. внутренняя частота от 250 до 400 МГц
// бит 1-0 - Charge pump current - 0x3 -150 мкА
И собственно запись в регистры:
void DDSCS1() {
P2DIR|=BIT2;
P2OUT|=BIT2;
}
void DDSCS0() {
P2DIR|=BIT2;
P2OUT&=~BIT2;
}
void STROBER()
{
P1OUT&=~BIT3;
DELAYUS(50);
P1OUT|=BIT3;
DELAYUS(50);
P1OUT&=~BIT3;
}
void write_cfr1(INT32U INPUTCFR1)
{
DDSCS0();
SPI_RX_Buffer.clear();
SPI_TX_Buffer.clear();
SPI_TX_Buffer.put(0x00);
SPI_TX_Buffer.put((INPUTCFR1>>24)&0x000000ff);
SPI_TX_Buffer.put((INPUTCFR1>>16)&0x000000ff);
SPI_TX_Buffer.put((INPUTCFR1>>8)&0x000000ff);
SPI_TX_Buffer.put(INPUTCFR1&0x000000ff);
Transfer_SPI();
IFG2 &= ~(UCB0RXIFG+UCB0TXIFG);
DDSCS1();
STROBER();
}