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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.10.2016, 19:20  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию tdc7200

Привет.
После прочтения даташита на микросхему.
Не понятно сигнал trigger ставиться в единицу и сбрасывается после прихода старт (ждет старта)? Какой лучше использовать генератор на 8МГц или 16 МГц какой ppm? Pin включения нужно включать с задержкой? Если да то хватит обычной RC цепочки (10КОм и 0,1мкФ)?
Очень буду рад практическому примеру использования данной микросхемы.
Реклама:
Alex_golubev вне форума  
Непрочитано 16.10.2016, 23:48  
AYuM
Прописка
 
Аватар для AYuM
 
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
AYuM на пути к лучшему
По умолчанию Re: tdc7200

В ДШ написано, что "Enable" должен подниматься после включения питания и должны быть исключены переходные процессы (глитчи) на этом выводе, иначе устройство может "ресетнуться". (п. 8.3.3.4 ENABLE)

п. 8.4.6 Measurement Sequence
1. После включения питания "enable" должен находится в низком уровне, затем, после стабилизации питания должен произойти один переход из низкого в высокий уровень на этом пине.
2. ПО MCU посылает запрос на новое измерение через интерфейс SPI
3. После начала нового измерения в регистре CONFIG1 будет установлен бит "START_MEAS", TDC7200 сгенерирует сигнал запуска на выводе TRIGG, который используется соответствующим ультразвуковым analogfrontend (например, TDC1000) в качестве триггера для запуска измерения.
4. Сразу после вывода сигнала "TRIG" TDC7200 разрешает прием фронта импулься на пине START.
5. После приема импульса "СТАРТ" TDC7200 сбрасывает сигнал на пине "TRIG".

Дальше лень переводить

6. The Clock counter is started after the next rising edge of the external clock signal (Measurement Mode 2). The Clock Counter STOP Mask registers (CLOCK_CNTR_STOP_MASK_H and CLOCK_CNTR_STOP_MASK_L) determine the length of the STOP mask window.
7. After reaching the Clock Counter STOP Mask value, the STOP pin waits to receive a single or multiple STOP trigger signal from the analog-front-end (for example, detected echo signal of the ultrasonic burst signal)
8. After the last STOP trigger has been received, the TDC will signal to the MCU via interrupt (INTB pin) that there are new measurement results waiting in the registers. START, STOP and TRIGG pin are disabled (in Multi-Cycle Averaging Mode, the TDC will start the next cycle automatically by generating a new TRIGG signal).
Note: INTB must be utilized to determine TDC measurement completion; polling the INT_STATUS register to determine measurement completion is NOT recommended as it will interfere with the TDC measurement.
9. After the results are retrieved, the MCU can then start a new measurement with the same register settings. This is done by just setting the START measurement bit via SPI. It is not required to drive the ENABLE pin low between measurements.
10. The ENABLE pin can be taken low, if the time duration between measurements is long, and it is desired to put the TDC7200 in its lowest power state. However, upon taking ENABLE high again, the device will come up with its default register settings and will need to be configured via SPI.

ДШ по применению TDC7200:
http://www.ti.com/lit/ug/sniu021a/sniu021a.pdf

Последний раз редактировалось AYuM; 17.10.2016 в 00:27.
AYuM вне форума  
Непрочитано 03.12.2016, 19:47  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: tdc7200

Не понял за что отвечает бит PARITY_EN в Configuration Register 1?
Alex_golubev вне форума  
Непрочитано 03.12.2016, 20:05  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: tdc7200

Судя по названию, это бит включения контроля четности данных. Бит четности встраивается в поток данных, передаваемых по интерфейсу. Предназначен для выявления ошибок передачи данных
NewWriter вне форума  
Непрочитано 09.12.2016, 10:32  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: tdc7200

Как лучше запускать микросхему на старт? Сначала инициализировать все регистры потом отсылать старт измерения или можно сразу за один прием регистрировать все регистры и ставить бит старт.
Alex_golubev вне форума  
Непрочитано 10.12.2016, 13:26  
Alex_golubev
Прописка
 
Регистрация: 07.02.2016
Сообщений: 139
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alex_golubev на пути к лучшему
По умолчанию Re: tdc7200

Написал структуру
Код:
#pragma pack(push,1)
typedef struct TDC720x {
unsigned char Register_Read_Write; // Register Read/Write 
unsigned char CONFIG1; // Configuration Register 1 
unsigned char CONFIG2;  // Configuration Register 2
unsigned char INT_STATUS; // Interrupt Status Register
unsigned char INT_MASK; // Interrupt Mask Register
unsigned char COARSE_CNTR_OVF_H; // Coarse Counter Overflow Value High
unsigned char COARSE_CNTR_OVF_L; // Coarse Counter Overflow Value Low
unsigned char CLOCK_CNTR_OVF_H; // CLOCK Counter Overflow Value High
unsigned char CLOCK_CNTR_OVF_L; // CLOCK Counter Overflow Value Low
unsigned char CLOCK_CNTR_STOP_MASK_H; // CLOCK Counter STOP Mask High 
unsigned char CLOCK_CNTR_STOP_MASK_L; // CLOCK Counter STOP Mask Low
unsigned int TIME1 :24; // Measured Time 1
unsigned int CLOCK_COUNT1  :24; // CLOCK Counter Value 
unsigned int TIME2  :24; // Measured Time 2 
unsigned int CLOCK_COUNT2  :24; // CLOCK Counter Value
unsigned int TIME3  :24; // Measured Time 3 
unsigned int CLOCK_COUNT3  :24; // CLOCK Counter Value
unsigned int TIME4  :24; // Measured Time 4
unsigned int CLOCK_COUNT4   :24; // CLOCK Counter Value 
unsigned int TIME5   :24; // Measured Time 5 
unsigned int CLOCK_COUNT5    :24; // CLOCK Counter Value 
unsigned int TIME6    :24; // Measured Time 6 
unsigned int CALIBRATION1    :24; // Calibration 1, 1 CLOCK Period
unsigned int CALIBRATION2    :24; // Calibration 2, 2/10/20/40 CLOCK Periods
}TDC720x_Str;
#pragma pack(pop)
Подаю следующию конфигурацию битов
Код:
    TDC7200.Register_Read_Write = 0xc0;
    TDC7200.CONFIG1 = 0xc3;
    TDC7200.CONFIG2 = 0x40;
    TDC7200.INT_STATUS = 0x00;
    TDC7200.INT_MASK = 0x07;
    TDC7200.COARSE_CNTR_OVF_H = 0xff;
    TDC7200.COARSE_CNTR_OVF_L = 0xff;
    TDC7200.CLOCK_CNTR_OVF_H = 0xff;
    TDC7200.CLOCK_CNTR_OVF_L = 0xff;
    TDC7200.CLOCK_CNTR_STOP_MASK_H = 0x00;
    TDC7200.CLOCK_CNTR_STOP_MASK_L = 0x00;
    TDC7200.TIME1 = 0x00;
    TDC7200.CLOCK_COUNT1 = 0x00;
    TDC7200.TIME2 = 0x00;
    TDC7200.CLOCK_COUNT2 = 0x00;
    TDC7200.TIME3 = 0x00;
    TDC7200.CLOCK_COUNT3 = 0x00;
    TDC7200.TIME4 = 0x00; 
    TDC7200.CLOCK_COUNT4 = 0x00;
    TDC7200.TIME5 = 0x00;
    TDC7200.CLOCK_COUNT5 = 0x00;
    TDC7200.TIME6 = 0x00;
    TDC7200.CALIBRATION1 = 0x00;
    TDC7200.CALIBRATION2 = 0x00;
    
    TDC720x_CS_ON; 
    HAL_SPI_TransmitReceive_DMA(&hspi4,(uint8_t*)&TDC7200,(uint8_t*)&TDC7200,sizeof(TDC7200));
Считываю через секунду
Код:
    TDC7200.Register_Read_Write = 0x80;
    TDC7200.CONFIG1 = 0x00;
    TDC7200.CONFIG2 = 0x00;
    TDC7200.INT_STATUS = 0x00;
    TDC7200.INT_MASK = 0x00;
    TDC7200.COARSE_CNTR_OVF_H = 0x00;
    TDC7200.COARSE_CNTR_OVF_L = 0x00;
    TDC7200.CLOCK_CNTR_OVF_H = 0x00;
    TDC7200.CLOCK_CNTR_OVF_L = 0x00;
    TDC7200.CLOCK_CNTR_STOP_MASK_H = 0x00;
    TDC7200.CLOCK_CNTR_STOP_MASK_L = 0x00;
    TDC7200.TIME1 = 0x00;
    TDC7200.CLOCK_COUNT1 = 0x00;
    TDC7200.TIME2 = 0x00;
    TDC7200.CLOCK_COUNT2 = 0x00;
    TDC7200.TIME3 = 0x00;
    TDC7200.CLOCK_COUNT3 = 0x00;
    TDC7200.TIME4 = 0x00; 
    TDC7200.CLOCK_COUNT4 = 0x00;
    TDC7200.TIME5 = 0x00;
    TDC7200.CLOCK_COUNT5 = 0x00;
    TDC7200.TIME6 = 0x00;
    TDC7200.CALIBRATION1 = 0x00;
    TDC7200.CALIBRATION2 = 0x00;
    
    TDC720x_CS_ON; 
    HAL_SPI_TransmitReceive_DMA(&hspi4,(uint8_t*)&TDC7200,(uint8_t*)&TDC7200,sizeof(TDC7200));
И вижу
Код:
Register_Read_Write	'я' (0xFF)	0x200006F8	unsigned char	
CONFIG1	'В' (0xC2)	0x200006F9	unsigned char	
CONFIG2	'@' (0x40)	0x200006FA	unsigned char	
INT_STATUS	'.' (0x19)	0x200006FB	unsigned char	
INT_MASK	'\a' (0x07)	0x200006FC	unsigned char	
COARSE_CNTR_OVF_H	'я' (0xFF)	0x200006FD	unsigned char	
COARSE_CNTR_OVF_L	'я' (0xFF)	0x200006FE	unsigned char	
CLOCK_CNTR_OVF_H	'я' (0xFF)	0x200006FF	unsigned char	
CLOCK_CNTR_OVF_L	'я' (0xFF)	0x20000700	unsigned char	
CLOCK_CNTR_STOP_MASK_H	'\0' (0x00)	0x20000701	unsigned char	
CLOCK_CNTR_STOP_MASK_L	'\0' (0x00)	0x20000702	unsigned char	
TIME1	0	0x20000702	unsigned int	
CLOCK_COUNT1	0	0x20000705	unsigned int	
TIME2	0	0x20000708	unsigned int	
CLOCK_COUNT2	0	0x2000070B	unsigned int	
TIME3	0	0x2000070E	unsigned int	
CLOCK_COUNT3	0	0x20000711	unsigned int	
TIME4	0	0x20000714	unsigned int	
CLOCK_COUNT4	0	0x20000717	unsigned int	
TIME5	0	0x2000071A	unsigned int	
CLOCK_COUNT5	0	0x2000071D	unsigned int	
TIME6	0	0x20000720	unsigned int	
CALIBRATION1	0	0x20000723	unsigned int	
CALIBRATION2	0	0x20000726	unsigned int
Куда пропали значения счетчиков ? Или я что-то делаю не так? Сигнал старт , стоп есть Проверял несколько раз.
Включаю микросхему
Код:
 
TDC720x_ON;
HAL_Delay(100);
Start_generator_tdc7200;
HAL_Delay(1000);
В чем дело?
Миниатюры:
Нажмите на изображение для увеличения
Название: DS0178.jpg
Просмотров: 0
Размер:	22.5 Кб
ID:	106920  

Последний раз редактировалось Alex_golubev; 10.12.2016 в 13:30.
Alex_golubev вне форума  
 

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

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

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

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


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


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