|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|
Передача данных по SPI, между АЦП и микроконтроллером20.03.2017, 05:33. Показов 7106. Ответов 21
Метки нет (Все метки)
Добрый день.
Понемногу разбираясь с микроконтроллерами, решил связать МК с АЦП посредством SPI. Но, как мне кажется, возникла проблема: длинна выходного сообщения с АЦП - 32 бита: LTC2498 (стр. 16), а максимальная длинна входного, у МК - 16: STM32F051C8 (стр. 721). Получается, я не могу получить на STM32F051C8 полной информации, поступающей с LTC2498? Максимум - какой-то обрывок, принудительно обрывая передачу данных с АЦП.
0
|
|
| 20.03.2017, 05:33 | |
|
Ответы с готовыми решениями:
21
Передача данных между МК по SPI Работа с АЦП микроконтроллером PIC Передача данных по SPI на расстояние |
|
|
||
| 20.03.2017, 06:10 | ||
|
Микроконтроллеры по своим интерфейсам связи не ограничены размерами регистров. Данные по мере приёма или передачи подкачиваются в/из памяти, постоянной или оперативной. Особенно для этого предназначен DMA.
1
|
||
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
| 20.03.2017, 08:00 | |
|
1
|
|
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|
| 20.03.2017, 17:26 [ТС] | |
|
Мой косяк. Страница 765.
Спасибо за ответ. Мне казалось что при конфигурированнии SPI, я ограничиваю длину сообщений в 8 или 16 бит, как (приём) RX так и (передачу) TX.
0
|
|
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
||||||
| 28.03.2017, 10:53 [ТС] | ||||||
|
Извиняюсь за долгое отсутствие.
Как выдалось свободное время, продолжил дальше мучить STM. Пытаюсь передать "настроечные" биты на АЦП LTC2498, но даже в регистр передачи DR ничего не заносится, он как был пустой, таким и остается. При тактировании и настройке порта B и SPI руководствовался примерами из интернета и, само-собой, мануалом к МК. Но, видимо, где-то допустил ошибку, которую у меня не получается найти.
0
|
||||||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
||||||
| 30.03.2017, 08:16 [ТС] | ||||||
|
Сделал инициализацию строго по даташиту. Не помогло.(
0
|
||||||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
||||||
| 01.04.2017, 10:23 [ТС] | ||||||
|
Воспользовался STM-овской библиотекой, для МК моей серии:
Что я делаю не так?((
0
|
||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 01.04.2017, 10:53 | ||
|
(начиная с CPOL_Low и CPHA_1Edge). Что касается самих данных - тут имеет смысл посмотреть на стр.17 ДШ. Что-то там как-то много данных надо кидать. Ваши "0x8B" должны быть чем-то обоснованы. Попробуйте разобраться, что это за биты и режимы.
1
|
||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 01.04.2017, 15:43 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Переведя из двоичной системы в 16-ричную, получилось: 0x12F0. Если я правильно перевёл. "SPI_SendData8(SPI2, 0x12F0);" Я перебрал все варианты настройки SPI, что вы предложили, но ничего не получилось. DR - пустой по прежнему. Что странно флаг "BSY" всё время срабатывает, как будто,всё же, что-то пошло по SPI. Но это "что-то" должно было сначала попасть в DR? Ведь так?
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
||
| 01.04.2017, 16:44 | ||
|
посмотри есть ли функция SPI_SendData16
1
|
||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|||||||
| 02.04.2017, 07:31 [ТС] | |||||||
|
Но и так DR пустой.
0
|
|||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|||||||
| 02.04.2017, 07:59 | |||||||
|
DR это регистр и для чтения и для записи Записываешь что должно уйти, а считываешь что придет,так может у тебя ничего не приходит попробуй вручную
1
|
|||||||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|||||||
| 02.04.2017, 10:03 [ТС] | |||||||
|
Сейчас снова попробовал, предварительно все затактировал с помощью библиотеки:
0
|
|||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 03.04.2017, 10:43 | ||
|
Вы проверьте прежде всего клоки, сделайте некоторую паузу между спадом и фронтом CS, и посчитайте количество бит посылки. Их должно быть 32, как я понимаю. АЦП - хоть и сложная довольно схематехнически вещь, она довольно "тупая" в плане цифрового интерфейса. По сути же это просто стейт-машина, которую нужно "запустить" в том виде, который вам нужен, строго по документации. Обычно, шаг вправо-влево - расстрел, т.к. стейтмашина просто неправильно сработает. И еще - ваши примеры имеют чтение АЦП в переменную, значение которой никак не используется. Соответственно, компилятор вполне возможно, выкинул ее и значение ее вы не увидите. Объявите ее 'volatile uint16_t' для пущей верности.
1
|
||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|||||||
| 04.04.2017, 11:09 [ТС] | |||||||
|
Обнаружилась интересная ошибка. Оказывается надо пины под SPI заводить в AF0, а не в AF1, как это делал я. Теперь я хоть что-то да передаю.
Теперь программа выглядит так (Франкенштейн какой-то - смесь стандартной библиотеки и STM-овской):
Перепроверил все настройки порта В и SPI, должно все работать.
1
|
|||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||
| 04.04.2017, 11:14 | |||
|
1
|
|||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
||
| 04.04.2017, 11:37 [ТС] | ||
|
Что касается примеров в референц мануале, то я настройку SPI выполнял аналогично.
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 04.04.2017, 15:02 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 17.07.2015
Сообщений: 27
|
|
| 05.04.2017, 06:13 [ТС] | |
|
0
|
|
| 05.04.2017, 06:13 | |
|
Помогаю со студенческими работами здесь
20
Передача данных через SPI ATmega8 передача и приём данных по SPI на STM32 Передача данных с АЦП по USART
Передача данных, вопросы по SPI и SSI интерфейсам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|