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

 
 
> Передача данных от МК к 12-ти раз-му ЦАП по 8 битному SPI, Помогите сделать на СИ...
Яrik
сообщение Mar 24 2007, 21:34
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 110
Регистрация: 8-01-07
Из: Украина
Пользователь №: 24 216



Помогите пожалуйста написать на СИ код необходимый для седующей операции. Имеется МК и ЦАП, связь по SPI. ЦАП 12-ти разрядный по этому запись данных производится за два раза. Как произвести запись в регистр SPI сначало четыре страшх бита, а потом остальные восемь из переменной? К тому же с первывми четирмя битами требуется записывать биты ныстройки ЦАП.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Яrik
сообщение Mar 24 2007, 22:01
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 110
Регистрация: 8-01-07
Из: Украина
Пользователь №: 24 216



Да вопрос выразел неочень smile.gif
Интересует как раз упаковка данных в два слова.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 25 2007, 01:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Яrik @ Mar 24 2007, 23:01) *
Да вопрос выразел неочень smile.gif
Интересует как раз упаковка данных в два слова.


Примерно так

Код
// void    OutSPI8(uint8_t    byte_data);                        // вывод на    SPI    8    бит    для    примера

#define    CH_A     0                                        // Канал А ЦАП
#define    CH_B     0x80                                    // Канал B ЦАП


struct
{
uint8_t            Buf            :    1,                    // VREF Input Buffer Control bit: 1 = Buffered
                    Ga            :    1,                    // GA: Output Gain Select bit: 1 = 1x (VOUT = VREF * D/4096), 0 = 2x (VOUT = 2 * VREF * D/4096)
                    SHDN        :    1;                    // SHDN: Output Power Down Control bit: 1 = Output Power Down Control bit, 0 = Output buffer disabled, Output is high impedance
} Status_DAC;                                            // биты    статуса ЦАПа

uint16_t            DAC_Data;                            // Выходные данные выводимые на ЦАП




void    OutDAC_ChanB(uint16_t data);                    // пример
{
    uint8_t        i;
    
    CS_On;                                                // Выбрать ЦАП
    i = ((DAC_Data >> 8) & 0xf)|CH_B|Status_DAC.Buf>>6|Status_DAC.Ga>>5|Status_DAC.SHDN>>4; // формируем старший байт
    OutSPI8(i);                                            // выводим ст. байт SPI
    OutSPI8(DAC_Data & 0xff);                            // выводим мл. байт SPI
    CS_Off;
    LDAC_On;
    LDAC_Off;                                            // выдать напряжение
}
Go to the top of the page
 
+Quote Post



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

 


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


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