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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> ad7730, не могу прочитать..
Herz
сообщение Apr 23 2009, 07:32
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Так ведь запись и чтение в SPI выполняются одновременно. Как у Вас организованы функции записи/чтения - непонятно. Что пишется в АЦП при чтении? Там, кажется, нужно удерживать DIN высоким.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 23 2009, 07:42
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



сейчас кидаю коды чтения регистров, из даташита( 0x10....0x17). а как на аппаратном spi-счиатывать одновременно? din-можно удерживать посылая (0xff)??
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 23 2009, 08:45
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



так тоже не получается....что-то идет. а что нинаю. ..просьба. можете дать кусочек кода для работы с ad7730, как пример. в инете мало что нашел
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 23 2009, 11:47
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(shuric80 @ Apr 23 2009, 09:42) *
сейчас кидаю коды чтения регистров, из даташита( 0x10....0x17). а как на аппаратном spi-счиатывать одновременно? din-можно удерживать посылая (0xff)??

Очень просто - буфер-то кольцевой. Действительно, нужно посылать единицы.

Цитата(shuric80 @ Apr 23 2009, 10:45) *
так тоже не получается....что-то идет. а что нинаю. ..просьба. можете дать кусочек кода для работы с ad7730, как пример. в инете мало что нашел

С ad7730 не работал, а для AD7738 (принцип, думаю, тот же) делал примерно так:

CODE
/*--------------функция обмена байтом по SPI----------------*/
unsigned char WriteSPI(unsigned char ByteToSend)
{
unsigned char TempVariable;
BF = 0;
TempVariable = SSPBUF; // Reads from SSPBUF, ensures BF bit is clear before
SSPBUF = ByteToSend; // sending the next byte.
while(!BF); // Wait until the transmission is complete.
return SSPBUF; // The data received should be valid.
}

/*----------функция сброса внешнего АЦП-----------------*/
void Reset7738 (void)
{
CSA=0; // выбор кристалла для внешнего АЦП
DelayUs(2);
WriteSPI(0); //
WriteSPI(0xFF); //
WriteSPI(0xFF); //
WriteSPI(0xFF); //
WriteSPI(0xFF); //
CSA=1; // отключить внешний АЦП
DelayMs(1);
}

/*-------функция записи байта в регистр AD7738----------*/
/* (ADREG - адрес регистра, DATA - данные) */

void WR_to_ADC (ADREG, DATA)
unsigned char ADREG, DATA;
{
CSA=0; // выбор кристалла для внешнего АЦП
DelayUs(2);
WriteSPI(ADREG); //
WriteSPI(DATA); //
CSA=1; // отключить внешний АЦП
DelayMs(1);
}

/*-----функция чтения выбранного регистра AD7738-------*/
/* (ADREG - адрес регистра, ln - длина данных в байтах)*/

unsigned int READ_ADC (ADREG, ln)
unsigned char ADREG, ln;
{
unsigned int BUFDAT; // 16-bit data buffer
CSA=0; // выбор кристалла для внешнего АЦП
DelayUs(2);
BUFDAT=0; // очистить буфер
WriteSPI(ADREG+0x40); // установить бит чтения
BUFDAT=WriteSPI(0); // читать при низком DIN первый байт
if (ln==2) // если данные 16-разрядные
{
BUFDAT=BUFDAT<<8; // сдвинуть байт в старший
BUFDAT=BUFDAT+WriteSPI(0); // и дописать в буфер младший байт
}
CSA=1; // отключить внешний АЦП
DelayUs(2);
return BUFDAT;
}


Сообщение отредактировал Herz - Apr 23 2009, 11:50
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Apr 23 2009, 12:09
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Я извиняюсь но где вы обнаружили,что это SPI,я для 7710 писал считывание и запись сам.Вы уверены,что используя стандартные функции вы не нарушаете временные диаграммы???
или не уверены?
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 23 2009, 12:48
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



не очень уверен. я сигнал cs-от ноги отдельно вывел. и программно щелкаю. сам spi завел на другое ацп для теста-там работало нормально.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Apr 23 2009, 13:00
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



На другое-это другого типа?
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 23 2009, 13:07
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



попала из запасов mcp3204 (простенькая ацп с спи) подключил.понастраивал.заработало. разобрался с настройками spi на контроллере. были сомнения по его работе.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 23 2009, 14:17
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



Herz, большое спсибо за пример. завтра попробую на основе вашего написать.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 24 2009, 11:08
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



не работает. выдает код какой то один и тот же. как будто 2 знака последних в буфере выходном засели и выдает их. замкнул ноги ацп между собой-а считываемые данные не изменились.
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 24 2009, 12:38
Сообщение #26


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(shuric80 @ Apr 24 2009, 13:08) *
не работает. выдает код какой то один и тот же. как будто 2 знака последних в буфере выходном засели и выдает их. замкнул ноги ацп между собой-а считываемые данные не изменились.

А что с формой импульсов? Не завалены фронты? Скорость какая? Снизьте до минимума на время проверки.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 24 2009, 13:40
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



частота тактовых импульсов spi сейчас стоит 1 МГц. фронты не завалены. сейчас попробую паузы понаставить.
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 24 2009, 15:41
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(shuric80 @ Apr 24 2009, 15:40) *
частота тактовых импульсов spi сейчас стоит 1 МГц. фронты не завалены. сейчас попробую паузы понаставить.

SPI программный, что ли? Мегагерц - многовато, конечно, для начала.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 27 2009, 05:21
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



SPI аппаратный. Сигнал-СS отдельно дергаю. а какую частоту выставить? пробовал 500 кГц. тоже самое.
Go to the top of the page
 
+Quote Post
shuric80
сообщение Apr 28 2009, 07:36
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 14-04-09
Пользователь №: 47 671



по даташиту чтобы просмотреть содержимое регистра данных нужно послать его адрес 0x12- . ??? выдает данные. повторяющиеся. вроде буффер выходной на АЦП или на spi -неочищается и выдает одно и тоже..
Go to the top of the page
 
+Quote Post

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

 


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


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