Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков.

 
Опции темы
Непрочитано 01.03.2019, 11:26  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,032
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Мануал по AD5270

"...Serial Clock Input. Data is clocked into the shift register on the falling edge of the serial clock input. Data can be transferred at rates up to 50 MHz. .."

Это значит что в регистре SPI_CR1 должны быть выставлены биты CPOL=0 и CPHA=1.
Также /SYNC через bit banding надо правильно изменять в начале и в конце передачи. Всё понятно описано в мануале.
Реклама:

Последний раз редактировалось dgrishin; 01.03.2019 в 11:29.
dgrishin на форуме  
Сказали "Спасибо" dgrishin
mike-y-k (01.03.2019)
Непрочитано 02.03.2019, 14:11  
pic121618
Временная регистрация
 
Регистрация: 16.02.2019
Адрес: Барановичи
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
pic121618 на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Может быть тупое предположение, но Вы перед опросом 2 мс паузы выдерживаете ?
стр 7 даташита...
На большее - вникать в шит меня не хватило....
pic121618 вне форума  
Непрочитано 04.03.2019, 09:07  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Сообщение от dgrishin Посмотреть сообщение
Мануал по AD5270

"...Serial Clock Input. Data is clocked into the shift register on the falling edge of the serial clock input. Data can be transferred at rates up to 50 MHz. .."

Это значит что в регистре SPI_CR1 должны быть выставлены биты CPOL=0 и CPHA=1.
Также /SYNC через bit banding надо правильно изменять в начале и в конце передачи. Всё понятно описано в мануале.
Код:
/* SPI1 init function */
void MX_SPI1_Init(void)
{

  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 10;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}


Сообщение от pic121618 Посмотреть сообщение
Может быть тупое предположение, но Вы перед опросом 2 мс паузы выдерживаете ?
стр 7 даташита...
На большее - вникать в шит меня не хватило....
Где вы это увидели то??
2мс это время PowerUp.
В любом случае я проверяю через отладчик тут время задержки перед выполнением команд секунды.
worldmasters вне форума  
Непрочитано 04.03.2019, 10:00  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,032
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Теперь вам осталось только показать код генерации сигнала /SYNC. Я сейчас посмотрел - в принципе для /SYNC очень хорошо подходит логика пина NSS.
Для этого его надо настроить как

Hardware NSS management (SSM = 0)
Two configurations are possible depending on the NSS output configuration (SSOE bit
in register SPI_CR2).
– NSS output enabled (SSM = 0, SSOE = 1)
This configuration is used only when the device operates in master mode. The
NSS signal is driven low when the master starts the communication and is kept
low until the SPI is disabled.
dgrishin на форуме  
Непрочитано 04.03.2019, 10:32  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Сообщение от dgrishin Посмотреть сообщение
Теперь вам осталось только показать код генерации сигнала /SYNC. Я сейчас посмотрел - в принципе для /SYNC очень хорошо подходит логика пина NSS.
Для этого его надо настроить как

Hardware NSS management (SSM = 0)
Two configurations are possible depending on the NSS output configuration (SSOE bit
in register SPI_CR2).
– NSS output enabled (SSM = 0, SSOE = 1)
This configuration is used only when the device operates in master mode. The
NSS signal is driven low when the master starts the communication and is kept
low until the SPI is disabled.
Код:
/*Configure GPIO pins : PBPin PBPin */
	GPIO_InitStruct.Pin = UR2_CS_Pin | URX_CS_Pin;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_PULLUP;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
Код:
uint16_t AD5270_ReadReg(uint8_t command) {
	uint16_t data = ((uint16_t) (command & 0x0f) ‹‹ 0x000a);
	uint16_t indata = 0;
	uint16_t nop = 0;
	//HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) &data, (uint8_t*) &indata, 2, 0x100);

	uint8_t upper_byte = (data ›› 8) & 0xFF;
	uint8_t lower_byte = 0;
	uint8_t receive = 0;
	HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) &upper_byte, (uint8_t*) &receive, 1, 0x100);
	HAL_Delay(2);
	indata = receive ‹‹ 8;
	HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) &lower_byte, (uint8_t*) &receive, 1, 0x100);
	indata |= receive;

	return indata;	//& 0x3ff;
}
Код:
HAL_GPIO_WritePin(URX_CS_GPIO_Port, URX_CS_Pin, GPIO_PIN_RESET);
	HAL_Delay(timeout);
	resp = AD5270_WriteReg(WRITE_CTRL_REG, 0x03); 
	HAL_Delay(timeout);
	HAL_GPIO_WritePin(URX_CS_GPIO_Port, URX_CS_Pin, GPIO_PIN_SET);
worldmasters вне форума  
Непрочитано 04.03.2019, 10:50  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,032
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

По вашим симптомам все сходится на том, что /sync сигнал не выставляется правильно и как следствие данные из сдвигового регистра не переписываются во внутренный регистр.
По коду все вроде правильно (точнее HALно) Мне регистры удобнее. Вы включили клокинг порта, с котрого идёт /sync ??
Если /sync перевести на NSS пин кода будет в два раза меньше
dgrishin на форуме  
Непрочитано 04.03.2019, 14:18  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Сообщение от dgrishin Посмотреть сообщение
включили клокинг порта, с котрого идёт /sync ??
Тестер показывает что напряжение снимается и выставляется при прохождении команд.
worldmasters вне форума  
Непрочитано 04.03.2019, 18:05  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,032
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

SPI AD5270 работает в 16битном режиме. А вы с ней работаете в 8 битном. Функцию AD5270_WriteReg вы так и не показали.

The AD5270/AD5271 have an internal counter that counts a multiple of 16 bits (a frame) for proper operation. For example, AD5270/AD5271 each works with a 32-bit word but do not work properly with a 31-bit or 33-bit word.

Попробуйте настроить SPI в 16 битном режиме.
dgrishin на форуме  
Непрочитано 04.03.2019, 18:50  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,254
Сказал спасибо: 11,168
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

dgrishin, придут живые - будет предмет для экспериментов. Вроде как в конце недели ожидаются. Без них и приборов рассуждать о правильности у ТС не берусь.
Тут только эксперимент прямой покажет. И его код, и из архива, и пара примеров из сети покажут истину
Благо тут потребность в очередной раз нарисовалась - нужна функция запоминания уровня при калибровке. С другими вариантами при включении есть зона неопределенности до установки нужного значения.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 05.03.2019, 09:06  
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Проблема с потенциометром AD5270

Сообщение от dgrishin Посмотреть сообщение
SPI AD5270 работает в 16битном режиме. А вы с ней работаете в 8 битном. Функцию AD5270_WriteReg вы так и не показали.

The AD5270/AD5271 have an internal counter that counts a multiple of 16 bits (a frame) for proper operation. For example, AD5270/AD5271 each works with a 32-bit word but do not work properly with a 31-bit or 33-bit word.

Попробуйте настроить SPI в 16 битном режиме.
А вот эта закоментированная функция ничего не говорит?
Код:
//HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) &data, (uint8_t*) &indata, 2, 0x100);
Уже по всякому отдавал и принимал данные. Функция WriteReg аналогична чтению.
worldmasters вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с FT232BM (FT232BL) anbsoft Микроконтроллеры, АЦП, память и т.д 27 07.08.2010 09:33
Проблема с DC/DC locostudy Источники питания и свет 2 03.11.2008 12:10
p30f6010A проблема с переключением состояния портов Ilya Микроконтроллеры, АЦП, память и т.д 8 22.09.2008 09:14
FT232BM проблема с прошивкой EEPROM zms2003 Микроконтроллеры, АЦП, память и т.д 3 27.06.2008 07:18
Проблема с ЛСД Zemlyanov Делимся опытом 4 12.01.2007 20:53


Часовой пояс GMT +4, время: 09:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot