Подключил к лаунчпаду китайский модуль ad9850. Хочу сообразить простенький синтезатор частот. Как я понял, управлять ad9850 лучще всего по SPI. SPI я запустил, а как дальше подавать в модуль команды?
Спойлер
//******************************************************************************//
//
// MSP430G2xx3 - USCI_A0 SPI Master Interface
//
// MSP430G2xx3
// ^ +Vcc -----------------
// _ | XIN|-
// 4k7 | |
// ad9850 _ --|RST XOUT|-
// --------- | | |
// ----|D0 DIO|<--+--->|-->|P1.2/UCA0SDA |
// ----|D1 | |P1.1/UCA0SDO P1.0|----->LED RED
// |---|D2 | D2 | P1.6|----->LED GREEN
// ----|D3 CLk|<-----------|P1.4/UCA0SCL |
// ----|D4 | | |
// ----|D5 STROBE|<-----------|P1.5 |
// ----|D6 | | |
// ----|D7 | | |
// +--|KEY_SCAN | | |
// | | | | |
// \|/
//
// * --|<-- - diodes (1N4148 etc.)
//
//
//
//******************************************************************************
#include "msp430g2553.h"
#include "stdint.h"
// MSP430 Ports Define
#define STROBE BIT5
#define DATA BIT2
#define CLK BIT4
int i, data, b;
void init_Ports()
{
P1OUT = 0x00; // P1 setup for LED & STROBE output
P2OUT = 0x00; // P2 setup for output
P1DIR = STROBE;
P1SEL = BIT2 + BIT4; // Set secondary functions for PORT1
P1SEL2 =BIT2 + BIT4; // P1.2 - RXD
P1OUT &= ~STROBE; // Set STROBE = "1" (Chip Select)
}
void init_WDT()
{
WDTCTL = WDTPW + WDTHOLD; //Stop watchdog
}
void init_SPI()
{
UCA0CTL0 |= UCCKPL + UCMST + UCSYNC; // 3-pin, 8-bit SPI master
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 |= 0x02; // /2
UCA0BR1 = 0; //
UCA0MCTL = 0; // No modulation
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
}
void main (void)
{
void init_Ports();
void init_WDT();
void init_SPI();
}