1 / 1 / 0
Регистрация: 20.04.2022
Сообщений: 21
1

Работа с MAX1303

15.11.2023, 17:36. Показов 271. Ответов 0

Author24 — интернет-сервис помощи студентам
День добрый всем!
Возникла проблема с MAX1303. Я не могу правильно проинициализировать АЦП. Я нашел в документации этап работы с интерфейсом, но ввиду специфичных команд, мне трудновато разобраться с его работой.
Вот основные моменты:

Использую я SPI3 с настройками:
C
1
2
3
4
5
6
7
8
9
10
11
12
  hspi3.Instance = SPI3;
  hspi3.Init.Mode = SPI_MODE_MASTER;
  hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi3.Init.NSS = SPI_NSS_SOFT;
  hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi3.Init.CRCPolynomial = 10;
Далее код инициализации MAX:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  uint8_t RxData[2] = {0};
  uint8_t buf = 0;
  uint8_t TxData[2] = {0};
 
  #define  ADC_MAX_RESET              0xC8  // 11001000
  #define  ADC_MAX_SELECT_MODE_CH2    0x90  // 10010000
  #define  ADC_MAX_SELECT_RANGE       0x87  // 10000111
  #define  ADC_MAX_MODE_OPERATION     0xA8  // 10101000
  #define  ADC_MAX_START_CONVERS_CH2  0x90  // 10010000
 
  #define  ADC_READY_INT_PORT         GPIOF    
  #define  ADC_READY_INT_PIN          GPIO_PIN_0
  #define  ADC_SELECT_PORT            GPIOI
  #define  ADC_SELECT_PIN             GPIO_PIN_8
 
  #define  ADC_MAX_CS_LOW()           HAL_GPIO_WritePin(ADC_SELECT_PORT, ADC_SELECT_PIN, GPIO_PIN_RESET)
  #define  ADC_MAX_CS_HIGH()          HAL_GPIO_WritePin(ADC_SELECT_PORT, ADC_SELECT_PIN, GPIO_PIN_SET)
  #define  ADC_MAX_CHECK_SSTRB()      HAL_GPIO_ReadPin(ADC_READY_INT_PORT, ADC_READY_INT_PIN)
 
  #define  SPI_MAX                    hspi3
  #define  SPI_SIZE_FOR_MAX           2
  #define  SPI_TIMEOUT                10
  #define  A0                         0x01  // 0x00000001
  #define  A1                         0x02  // 0x00000010
  #define  A2                         0x04  // 0x00000100
  #define  MUXMASK                    0x18  // 0x00011000
  #define  SET                        GPIO_PIN_SET
  #define  RESET                      GPIO_PIN_RESET
 
 /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
   *   1. СБРОС
   *   2. Выберите несимметричный или истинно дифференциальный входной канал конфигурации
   *   3. Выберите диапазон монополярного или биполярного входного сигнала
   *   4. Выберите режим работы:
   *       4.1 Внешние часы (режим 0)
   *       4.2 Внешний сбор данных (режим 1)
   *       4.3 Внутренние часы (режим 2)
   *       4.4 Сброс (режим 4)
   *       4.5 Частичное отключение питания (режим 6)
   *       4.6 Полное отключение питания (режим 7)
   *   5. Инициируйте конверсии и читайте результаты
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 
 
  
  // 1.
  TxData[0] = ADC_MAX_RESET;
  ADC_MAX_CS_LOW();
  HAL_SPI_Transmit(&SPI_MAX, TxData, 1, 10);
  ADC_MAX_CS_HIGH();
  HAL_Delay(10);
  
  // 2.
  TxData[0] = ADC_MAX_SELECT_MODE_CH2;
  ADC_MAX_CS_LOW();
  HAL_SPI_Transmit(&SPI_MAX, TxData, 1, 10);
  ADC_MAX_CS_HIGH();
  HAL_Delay(1);
 
  // 3.
  TxData[0] = ADC_MAX_SELECT_RANGE;
  ADC_MAX_CS_LOW();
  HAL_SPI_Transmit(&SPI_MAX, TxData, 1, 10);
  ADC_MAX_CS_HIGH();
  HAL_Delay(1);
 
  // 4.
  TxData[0] = ADC_MAX_MODE_OPERATION;
  ADC_MAX_CS_LOW();
  HAL_SPI_Transmit(&SPI_MAX, TxData, 1, 10);
  ADC_MAX_CS_HIGH();
 
  // 5.
  TxData[0] = 0;
  TxData[1] = ADC_MAX_START_CONVERS_CH2;
  ADC_MAX_CS_LOW();
  HAL_SPI_Transmit(&SPI_MAX, TxData, 2, 10);
  ADC_MAX_CS_HIGH();
  HAL_Delay(1);
  while (!ADC_MAX_CHECK_SSTRB());
  ADC_MAX_CS_LOW();
  HAL_SPI_Receive(&SPI_MAX, RxData, 2, 10);
  ADC_MAX_CS_HIGH();
Так же прилагаю документацию по MAX на случай если будет лень искать.
Процессор использую stm32f407igt6
Проект собирал в cubeMX
От нечего делать я и наугад тыкал (выбирал биты), и на небольшой промежуток заработал при конфигурации битов указанной выше. Но потом перестало)
Буду благодарен за помощь и заранее спасибо!
Вложения
Тип файла: pdf MAX1302(1303) .PDF (1.02 Мб, 10 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2023, 17:36
Ответы с готовыми решениями:

Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных
Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных. ...

Работа с строками,Работа со структурными типами данных,Работа с файлами!!
Помогите написать программы для следующих заданий....буду очень благодарен.) 1)Разработать...

Работа - проведение обучающих семинаров по C#. Работа по выходным дням ( сб-вс - 32 часа). От 30 000р.
Обязанности - проведение обучающих семинаров по C# Базовый (начальный уровень). Опыт...

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с событиями,работа со всеми...

Работа формы в фоне, вне фокуса (работа с раскладкой клавиатуры)
Как заставить это работать в фоне? Даный код работает пока форма в фокусе, как только ее...

0
15.11.2023, 17:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2023, 17:36
Помогаю со студенческими работами здесь

Работа с ems api: корректная работа при указании веса.
Здравствуйте! Есть такой код, для работы с ems api...

Работа с Меню. Сохранение, печать, создать новый. Работа с рисованием
В общем сабж. Делается программа, которая должная Сохранять, печатать и очищать поле (создать...

Количество подведенного и отведенного тепла, работа сжатия, работа расширения
Определить количество подведенного и отведенного тепла, работу сжатия, работу расширения, полезную...

Работа с файловой системой (системное название некоторых папок и работа со скрытыми документами)
Всем привет, подскажите каким образом можно из VBA сохранить документ txt в папке "Общие...

Нужна книга, где рассматриваются работа с прерываниями, указатели, работа с памятью, ассемблерные вставки
Привет всем! Подскажите, пожалуйста, хорошую книгу по C (именно C, не C++). Интересует работа с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru