Перейти к содержанию
    

Не получается нормально прочитать регистры АЦП AD7792

Всем доброго времени суток!

Ситуация такая: подаю питание на АЦП, выдаю софтовый сброс с чипселектом 32 единицы, читаю ID - всё нормально, возвращает 0x4A (с маской 0xF интересно что это именно А) а далее всё, кранты. Допустим читаю это же регистр или другие регистры - возвращает в основном нули. Если перед каждым чтением регистра выдавать софтовый сброс то всё хорошо, все регистры по умолчанию читаются в соответствии с даташитом.

Вопрос - что я не так делаю?

Т.е. вот так работает, rrr = 0x4A:

volatile unsigned short rrr;

AD779X_Reset();
HAL_Delay(1);
rrr=AD779X_HWDetect();        
AD779X_Reset();
HAL_Delay(1);
rrr=AD779X_HWDetect(); 

вот так не работает

volatile unsigned short rrr;

rrr=AD779X_HWDetect();   
HAL_Delay(1);
rrr=AD779X_HWDetect(); 

 

unsigned char AD779X_HWDetect()
{
	unsigned char result;
	
	ADCDevice.CSControl(cssEnable);	
	ADCDevice.TxByte(AD779X_RDR_ID); /* send cmd: read ID register */	
	m_adc_model = ADCDevice.RxByte(); /* get ID */	
	ADCDevice.CSControl(cssDisable);
	
	return (m_adc_model);
}

ВТорой день туплю, не понимаю почему так происходит. Что АЦП не нравиться? Почему сброса требует? На осциллографе вроде всё нормально. Когда не работает, SDO АЦП действительно не отвечает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос не про ИС, а фактически про то, чего тот индиец насочинял в той библиотеке, и как минимум для другого раздела форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 13.01.2024 в 05:39, Plain сказал:

Вопрос не про ИС, а фактически про то, чего тот индиец насочинял в той библиотеке, и как минимум для другого раздела форума.

Изначально либу на гитхабе писал не индус, я её во многом переработал. Если топик надо перенести в другое место - я не против. Просто в этом же разделе было обсуждение АЦП 7792 но на дркгкю тему, вот и решил разместить тут же. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 13.01.2024 в 11:10, Plain сказал:

В этом разделе показывают осциллограммы и т.п.

Хорошо. ВОт осциллограммы SPI

Соответствуют коду 

rrr=AD779X_HWDetect();   
rrr=AD779X_HWDetect();

Другими словами первая строчка работает, ответ есть. Вторая не работает, ответ всегда 0.

Вот это осциллорамма SCK и SDO

photo_2024-01-15_11-31-38(2).thumb.jpg.30c8290d58fb557801fc1439902f048b.jpg

Вот это осциллорамма SCK и CS

photo_2024-01-15_11-31-38.thumb.jpg.3f24ebd2f2e9974212128494443fd919.jpg

Вот это более подробная осциллорамма SCK и SDO когда данные с АЦП выплевываются.

photo_2024-01-15_11-31-38(3).thumb.jpg.a0694992f3c55cb628592df02f814348.jpg

 

ВОт осциллограммы SPI

Соответствуют коду 

rrr=AD779X_HWDetect();  
AD779X_Reset(); 
rrr=AD779X_HWDetect();

Первая и третья строчка работает если между ними ставить сброс.

Осциллорамма SCK и SDO

photo_2024-01-15_11-42-55.thumb.jpg.6adc43311be3b2a17dd07e4b128e8991.jpg

Осциллорамма SCK и CS

photo_2024-01-15_11-42-46.thumb.jpg.de9e7866e406a3a4a35da3649b51dee6.jpg

Изменено пользователем Halfback

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AD779X_Reset(); -> это выплевывание из МК в АЦП 4 раза 0xFF

AD779X_HWDetect(); -> это выплевывание из МК в АЦП 0x60 и потом 0x00, где АЦП должен выплюнуть байт с идентификатором. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.01.2024 в 20:23, Halfback сказал:

Второй день туплю...

Это нормально. Я неделю тупил, пока не понял, что у меня не тот тип SPI задан (чтение/запись по фронту/срезу SCLK)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 15.01.2024 в 12:02, stells сказал:

Это нормально. Я неделю тупил, пока не понял, что у меня не тот тип SPI задан (чтение/запись по фронту/срезу SCLK)

Вот так спасибо. Привел CPHA (2 EDGE) и CPOL (High) в соответствие и всё заработало как надо. Ура!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...