реклама на сайте
подробности

 
 
> MSP430 + AD5422
_Toxa_
сообщение Oct 12 2010, 18:33
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 16-08-07
Пользователь №: 29 832



Господа знатоки, просьба поделиться опытом, если кто навешивал AD5422 на MSPшку.
Ситуация тривиальная - 249й контроллер, по SPI на него навешана flash (напрямую) и 4 AD5422 (через мультиплексоры и ADuMки)
Все по пдфнику на ЦАП делаю - значения на выходе не хочет выставлять.

Схемы прилагаю (48ая нога контроллера проброшена на 3ю DA2 вручную - упустил из виду при составлении схемы)


Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Toxa_
сообщение Oct 13 2010, 15:23
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 16-08-07
Пользователь №: 29 832



тестовая прога вот:

инициализация spi

Код
// SPI initialization for DAC
void SPI_Init_(void)
{    
  P5DIR |= 1<< 4;
//  P5DIR |= 1<< 0;
  deselect();
    
  UCB1CTL1 |= UCSWRST;
  
  UCB1CTL0  = 0x00;
  UCB1CTL0 |= UCMST;                  // master mode
  UCB1CTL0 |= UCSYNC;                 // synchronous mode
  UCB1CTL0 |= UCMSB;                  // MSB first
//  UCB1CTL0 |= UCCKPL;                 // The inactive state is high
  
  
  UCB1CTL1 = 0x41;                    // ACLK, hold UCSWRST
  
  UCB1BR0 = (byte)(QZ / 2 / FREQDAC);        // set frequency
  UCB1BR1 = (QZ / 2 / FREQDAC) >> 8;  
  
  P5SEL |= 1 << 1; // MOSI
  P5SEL |= 1 << 2; // MISO
  P5SEL |= 1 << 3; // SCK

  
  UCB1CTL1 &= ~UCSWRST;                 // **Initialize USCI state machine**
    
  UC1IE  &= ~UCB1RXIE;                  // Enable USCI_B1 RX interrupt
  UC1IE  &= ~UCB1TXIE;            // Disable USCI_B1 TX interrupt

}


функция отправки по spi
Код
void SPI_Send(uchar b)
{
  UC1IFG |= UCB1TXIFG;
    UCB1TXBUF = b;

      while (((UC1IFG&UCB1TXIFG)>>3)==0);    
       Delay_ms(1);

       SPI_WaitForComplete;
    wdgRst();
}


Обращение к ЦАПу в основном цикле
Код
// test DAC

  SPI_Init_();
  Delay_ms(2);

// enable muxes
P3DIR |= 1;P3OUT &= ~1;
// mux addr 0 - DAC #1
P2DIR |= (1 << 1);P2OUT &= ~(1 << 1);
P2DIR |= (1 << 2);P2OUT &= ~(1 << 2);
        
        
//  // set control
    LATCH_HIGH;
    SPI_Send(0x55);//01010101 - control register addr
    SPI_Send(0x10);
    LATCH_LOW;
    SPI_Send(0x01);
    LATCH_HIGH;
    
    Delay_ms(10);    
    SPI_Send(0x01);//00000001 - data register addr
    SPI_Send(0x88);
    LATCH_LOW;
    SPI_Send(0x00);
    LATCH_HIGH;    
//


дефайны
Код
#define desFLASH    {P5OUT |=   1<< 0;}      
#define selFLASH    {P5OUT &= ~(1<< 0);}


#define select()    selFLASH
#define deselect()  desFLASH

#define  SPIspeed               BAUD_UART1
#define  BAUD_UART1             9600L
#define  SPI_notready()     (UCB1STAT & UCBBUSY)
#define  SPI_WaitForComplete      while ( SPI_notready() == 1);

#define LATCH_LOW   {P5DIR |= 1<<4;P5OUT &= ~(1<<4);}
#define LATCH_HIGH  {P5DIR |= 1<<4;P5OUT |=  (1<<4);}


Насчет замечаний по схемотехнике - согласен, но даже при такой хромой реализации выбранный на муксе ЦАП работать должен (при корректном софте, разумеется)???
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01531 секунд с 7
ELECTRONIX ©2004-2016