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

Проблема обмена STM32F777 с AD5293 по SPI

Возникла проблема обмена STM32F777 с резистором AD5293 по SPI (с аппаратным SS). Даташит на AD5293 не блещет наполненностью. Получается, что с одними настройками SPI (CPOL=LOW, CPHA=1 Edge) в резистор пишется, но читаются из него данные, как будто сдвинутые на один бит вправо (весь массив). Если сделать CPHA=2 Edge, то видно, что принимаемые данные соответствуют посланным на предыдущей стадии, но резистор не понимает что от него хотят и ответ на команду чтения (NOP=0) не посылает.

Частоту клоков (делитель 4...32) делали разную - не влияет. Подтяжка по выходу SDO есть (и встроенная в процессор, и внешнюю 2.4к ставили). Делали задержку 1, 10 мс между записью и чтением (типа, чтобы резистор "отработал") - не помогло.

Использую STM32CubeIDE последней версии. Для теста записи/чтения значения value в резистор использовался, например, такой код (вариант без задержки):

#define count 4
uint16_t tx[count] = {0x1802,0x400|(value & 0x3FF),0x800,0}, rx[count];

if(HAL_SPI_TransmitReceive(&hspi2, (uint8_t*)tx, (uint8_t*)rx, count, 50) != HAL_OK)
  Error_Handler();

Например, когда value = 0x123, принимаются соответственно 0, 0xC01, 0x291, 0x91 вместо 0, 0x1802, 0x523, 0x123. Видно, что получено всё сдвинутое на 1 бит вправо. Младший бит утерян, но, если сделать count = 5 и читать лишнее слово, то оно будет равно 0x8000 - как раз с младшим битом в старшем разряде.

Собственно, хотелось делать сразу чтение для проверки, что в резисторе записано то, что записывали. Не хотелось бы делать костыль со сдвигом влево. Как цивилизованно решить этот трабл и из-за чего он может быть?

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

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


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

4 часа назад, Dimonira сказал:

Как цивилизованно решить этот трабл и из-за чего он может быть?

Цивилизованно решают при помощи осциллографа или логического анализатора.

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


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

14 hours ago, jcxz said:

Цивилизованно решают при помощи осциллографа или логического анализатора.

Чёрт возьми, не знал.

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


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

On 8/13/2019 at 11:54 AM, Dimonira said:

Использую STM32CubeIDE последней версии.

 

А у вас состояние FreeRTOS отображается?
Live Expressions?
SWV?

и на каком JTAGе? ST-LINK или J-LINK ?

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


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

On 9/2/2019 at 3:13 PM, bgc said:

 

А у вас состояние FreeRTOS отображается?
Live Expressions?
SWV?

и на каком JTAGе? ST-LINK или J-LINK ?

Проверялось без FreeRTOS. SWV не включал. Тогда был J-LINK.

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


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

1 hour ago, Dimonira said:

Проверялось без FreeRTOS. SWV не включал. Тогда был J-LINK.

А надо бы еще и без куба. На чипе есть RDY SYNC - они задействованы ? 

Quote

Falling Edge Synchronization Signal. This is the frame synchronization signal for the input data. When SYNC goes low, it enables the shift register, and data is transferred in on the falling edges of the following clocks. The selected register is updated on the rising edge of SYNC, following the 16th clock cycle. If SYNC is taken high before the 16th clock cycle, the rising edge of SYNC acts as an interrupt, and the write sequence is ignored by the DAC.

Пользовали бы лог. анализатор, как Вам выше советовали - достаточно было бы сравнить диаграммы из даташита и реальные.

Quote

Даташит на AD5293 не блещет наполненностью.

да. Он блещет "необходимостью и достаточностью".

 

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


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

2 hours ago, k155la3 said:

А надо бы еще и без куба. На чипе есть RDY SYNC - они задействованы ? 

Пользовали бы лог. анализатор, как Вам выше советовали - достаточно было бы сравнить диаграммы из даташита и реальные.

да. Он блещет "необходимостью и достаточностью".

 

RDY не задействован, ибо в SPI интерфейсе отсутствует и

Quote

The AD5293 contains a serial interface (SYNC, SCLK, DIN, and SDO) that is compatible with SPI standards, as well as most DSPs.

Лог. анализатора нет.

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


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

1 час назад, Dimonira сказал:

Лог. анализатора нет.

За прошедший почти месяц уже можно было заказать и дождаться с али самый дешёвый. И в будущем понадобится если ещё какие цифровые интерфейсы отлаживать придётся.

А без лог.анализатора в этом деле, это как оперировать больного с закрытыми глазами: можно конечно и удачно ткнуть скальпелем наугад, но скорее всего не очень.

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


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

3 hours ago, jcxz said:

За прошедший почти месяц уже можно было заказать и дождаться с али самый дешёвый. И в будущем понадобится если ещё какие цифровые интерфейсы отлаживать придётся.

А без лог.анализатора в этом деле, это как оперировать больного с закрытыми глазами: можно конечно и удачно ткнуть скальпелем наугад, но скорее всего не очень.

Я же не буду за свои покупать для работы анализатор. Итак уже натаскал на работу всякого, и тестер, и батарейки, и конвертер usb-ethernet, и планки памяти и т.д., уже всего и не упомню.

Я сделал простейший костыль - чтение лишних битов. И этот костыль работает 100%. Ни одного сбоя не было, ибо если читается не то, что записывалось, то вызывается ErrorHandler с вечным циклом. В него ни разу процессор не заходил. Да и вопрос этот померк с свете другой проблемы (в соседней ветке).

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


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

8 минут назад, Dimonira сказал:

Я же не буду за свои покупать для работы анализатор. Итак уже натаскал на работу всякого, и тестер, и батарейки, и конвертер usb-ethernet, и планки памяти и т.д., уже всего и не упомню.

Странная работа, на которой даже мелочами не обеспечивают.  :unknw:

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

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


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

31 minutes ago, jcxz said:

Странная работа, на которой даже мелочами не обеспечивают.  :unknw:

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

Так везде в той или иной степени, всё зависит от запущенности (ака бедности) конторы.

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


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

On 9/9/2019 at 10:22 PM, Dimonira said:

Так везде в той или иной степени, всё зависит от запущенности (ака бедности) конторы.

Вот ЭТО поюзайте, весч стоящая и проверенная Китайский 8-каналный логический анализатор

За 10-20 $ оно вам сэкономит много невров. Получите еще и  "декодеры" протоколов I2C, SPI, USART, CAN и еще что-то.

А если такая сумма для фирмы критична ....  Это как в анекдоте "Да что же вы так убиваетесь ? .... Да вы же так никогда не убьетесь !"

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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