Jump to content
    

SPI драйвер для ADS7046

Да на бареметале тут тоже нормально не сделать, т.к у SPI нет евента от таймера. А если вешать на обработчик прерываний, то не хило ресурсов сожрет. 

Share this post


Link to post
Share on other sites

33 minutes ago, Mysteo said:

А если вешать на обработчик прерываний, то не хило ресурсов сожрет.

И джиттер лютый выйдет.

Share this post


Link to post
Share on other sites

4 hours ago, Mysteo said:

Да на бареметале тут тоже нормально не сделать, т.к у SPI нет евента от таймера. А если вешать на обработчик прерываний, то не хило ресурсов сожрет. 

Это иначе делают. 
Надо настроить DMA (прямой доступ в память) чтобы из одного адреса (вход с порта) в область памяти писал. К порту GPIO подключить источник информации и сигнал готовности данных настроить, чтобы синхронизировал DMA.
По заполнению буфера вызывать прерывание, в котором переключать буфер, перенастроив DMA. 

Share this post


Link to post
Share on other sites

12 часов назад, Tarbal сказал:

Надо настроить DMA (прямой доступ в память) чтобы из одного адреса (вход с порта) в область памяти писал.

Ну тут все стандартно

12 часов назад, Tarbal сказал:

К порту GPIO подключить источник информации и сигнал готовности данных настроить, чтобы синхронизировал DMA.

А вот это каким образом реализовывать?? Да еще и как ТС хочет без использования прерываний...

17 часов назад, Mysteo сказал:

Да на бареметале тут тоже нормально не сделать, т.к у SPI нет евента от таймера. А если вешать на обработчик прерываний, то не хило ресурсов сожрет. 

На бареметале, например в том же Т113, работу с SPI можно тупо возложить на одно из ядер А7, без прерываний и ДМА и малейшей загрузки первого ядра, или вообще переложить всю эту "почетную" обязанность на тот же hifi DSP...

Edited by mantech

Share this post


Link to post
Share on other sites

37 minutes ago, mantech said:

переложить всю эту "почетную" обязанность на тот же hifi DSP...

...можно и не на бареметале)))

Share this post


Link to post
Share on other sites

22 минуты назад, aaarrr сказал:

...можно и не на бареметале)))

Ну да, но ТСу я намекнул, что сам для подобных задач сначала выбрал бы соотв. железо...

Share this post


Link to post
Share on other sites

On 4/2/2024 at 3:25 AM, Tarbal said:

Это иначе делают. 
Надо настроить DMA (прямой доступ в память) чтобы из одного адреса (вход с порта) в область памяти писал. К порту GPIO подключить источник информации и сигнал готовности данных настроить, чтобы синхронизировал DMA.
По заполнению буфера вызывать прерывание, в котором переключать буфер, перенастроив DMA. 

А что будет триггером для считывания данных ? На STM32 я просто настраивал таймер нужную частоту и евент от таймера делал триггером для считывания через DMA . А тут никаких триггеров у SPI нету.

Share this post


Link to post
Share on other sites

2 часа назад, Mysteo сказал:

А тут никаких триггеров у SPI нету.

Да, потому что это не стм32...

Share this post


Link to post
Share on other sites

7 hours ago, Mysteo said:

А что будет триггером для считывания данных ? На STM32 я просто настраивал таймер нужную частоту и евент от таймера делал триггером для считывания через DMA . А тут никаких триггеров у SPI нету.

Я о связи барметала и Линукса писал. Тригер внутри барметала. Там можно на прерывании таймера сделать.
Можно подобрать частоту SPI так, чтобы читало без остановки, выдавая с нужной скоростью результат.Как раз время транзакции SPI совпадет с sampling rate.

Share this post


Link to post
Share on other sites

7 часов назад, Tarbal сказал:

Тригер внутри барметала. Там можно на прерывании таймера сделать.

Нет там триггера, от слова совсем, ни линух ни бареметал тут не помогут)))  

7 часов назад, Tarbal сказал:

Можно подобрать частоту SPI так, чтобы читало без остановки, выдавая с нужной скоростью результат.Как раз время транзакции SPI совпадет с sampling rate.

А кто CSом дергать тогда будет? И ТС сразу отверг использование прерываний...

Share this post


Link to post
Share on other sites

On 4/3/2024 at 8:30 AM, mantech said:

И ТС сразу отверг использование прерываний...

Да я не отверг. Просто пока еще не разобрался как в Linux все это организовано. Сейчас сначала попробую на baremetal написать программу.

Share this post


Link to post
Share on other sites

1 hour ago, mantech said:

ТС сразу отверг использование прерываний...

Прерываться на 2.4М - очень так себе идея.

 

30 minutes ago, Mysteo said:

Сейчас сначала попробую на baremetal написать программу.

Правильно, вопрос требует исследования.

Share this post


Link to post
Share on other sites

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

Прерываться на 2.4М - очень так себе идея.

Точнее не скажешь!))) Особенно когда нет аппаратного векторного контроллера, разве, что на FIQ но тоже есть вопросы...

Edited by mantech

Share this post


Link to post
Share on other sites

В общем сделал я на BareMetal всё, но скорости железа не хватает для обработки сигнала, пришлось делать overclock , в общем совсем не годится это железо. 
А если использовать T113-s3 Cortex-A7, можно будет на нем добиться желаемого под линуксом ? 

Share this post


Link to post
Share on other sites

19 minutes ago, Mysteo said:

А если использовать T113-s3 Cortex-A7, можно будет на нем добиться желаемого под линуксом ?

Если задействовать DSP - пожалуй, возможно. Но не уверен, стоит ли оно того.

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.

×
×
  • Create New...