Jump to content

    
Sign in to follow this  
Dimonira

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

Recommended Posts

Возникла проблема обмена 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 - как раз с младшим битом в старшем разряде.

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

Edited by Dimonira

Share this post


Link to post
Share on other sites
4 часа назад, Dimonira сказал:

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

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

Share this post


Link to post
Share on other sites
On 8/13/2019 at 11:54 AM, Dimonira said:

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

 

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

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

Share this post


Link to post
Share on other sites
On 9/2/2019 at 3:13 PM, bgc said:

 

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

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

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

Share this post


Link to post
Share on other sites
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 не блещет наполненностью.

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

 

Share this post


Link to post
Share on other sites
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.

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

Share this post


Link to post
Share on other sites
1 час назад, Dimonira сказал:

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

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

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

Share this post


Link to post
Share on other sites
3 hours ago, jcxz said:

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

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

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

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

Share this post


Link to post
Share on other sites
8 минут назад, Dimonira сказал:

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

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

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

Share this post


Link to post
Share on other sites
31 minutes ago, jcxz said:

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

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

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

Share this post


Link to post
Share on other sites
On 9/9/2019 at 10:22 PM, Dimonira said:

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

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this