Например TDA7294

Форум РадиоКот • Просмотр темы - NRF51822 SPI
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 14:34:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 13:41:03 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Доброго времени! Возникло недопонимание в плане работы SPI в контроллере NRF51822. А именно: в Reference Manual (http://infocenter.nordicsemi.com/pdf/nRF51_RM_v3.0.pdf) написано, что отправка наступает после записи в регистр TXD. Т.е. это можно понимать так: после записи в регистр TXD начинается тактирование SPI, генерируется 8 тактовых импульсов и записанный байт сдвигается в MOSI. Ок, допустим. Мне нужно работать с АЦП ADS1220 (http://www.ti.com/lit/ds/symlink/ads1220.pdf) одиночными запросами. Для этого там есть команда START/SYNC (8 бит). Т.е. по времнной диаграмме на стр 37 даташита имеем следующее: посылаем START/SYNC и, спустя время, генерим 3*8=24 тактовых импульса и забираем свои заветные 24 бита с АЦП. А теперь собственно вопрос: как заставить NRF сгенерировать эти тактовые импульсы? Можно ли писать в регистр TXD просто нули, будет ли SPI на это реагировать и генерировать такт? Каким образом контроллер распознает факт записи в регистр? Может быть, кто сталкивался с подобным?

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 13:50:53 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
KT315B, обычно хоть нули хоть что . В SPI что бы что-то получить надо что нибудь послать.
Новичок что ли?
Не знаю как в NRF51 , в NRF52 SPI прост до безобразия ну и плюс еще EasyDMA, ну и плюс махаем лапкой SS аппаратно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 13:54:20 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не, не новичок, но, относительно новичок в NRF )) Непонятно, как контроллер опознает (и опознает ли?) факт записи в TXD. Если вариант с записью нулей прокатывает - проблема решена. Смутило отсутствие нечто типа "TASKSTART" по сравнению, с остальной периферией NRF51. Сам АЦП для экспериментов получу только в понедельник (

_________________
R2AIV 73!


Последний раз редактировалось KT315B Пт ноя 16, 2018 14:02:32, всего редактировалось 1 раз.

Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 14:02:04 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
В мануале же:
Цитата:
26.1.3 SPI master transaction sequence
An SPI master transaction is started by writing the first byte, which is to be transmitted by the SPI master, to
the TXD register. Since the transmitter is double buffered, the second byte can be written to the TXD register
immediately after the first one. The SPI master will then send these bytes in the order they are written to the
TXD register.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 14:04:19 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Это читал. Просто, допустим, я туда буду слать постоянно [START/SYNC]--пауза--[0][0][0]. Когда будут идти друг за другом нули - содержимое регистра не будет меняться, каким образом контроллер поймет, что туда что-то записано и надо генерировать такт? Стробирование данных TXD не понятно :o

_________________
R2AIV 73!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 14:16:12 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Фиксируется сам факт записи а не содержимое. Это же для SPI модуля любого производителя справедливо.
Есть лог.анализатор?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 14:17:45 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Рейтинг сообщений: 13
Зарегистрирован: Пт июл 21, 2006 15:05:19
Сообщений: 1266
Откуда: плод воображения
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ок, спасибо не был уверен, решил убедиться. Думал, запись стробироваться должна.

UPD: анализатор есть, но к ногам не подобраться - очень плотный монтаж. Попробую на макете попробовать, хорошая идея )

_________________
R2AIV 73!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Пт ноя 16, 2018 14:23:16 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Контроллер вообще не анализирует данные, пока его об этом не попросят специально. Сказано "переслать из ячейки памяти А в регистр Б один байт", он выполняет. SPI-блоку точно так же пофиг. Он получил информацию о том, что поступил новый байт, схватил его и поволок выталкивать в линию. Что это за байт, какая у него судьба, что в нем и т.п. абсолютно никого внутри МК не интересует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51822 SPI
СообщениеДобавлено: Ср июн 29, 2022 20:38:42 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Добрый день. Подниму тему. Чип NRF52833, поднимаю SPI Master.
Прописываю настройки и адреса буферов чтения и записи, количество посылок. Но после записи START task ничего не происходит. В регистрах состояния видно, что SPI пытается стартовать, но ему что-то мешает. Никак не пойму, что.
Код настройки SPI (используется только одна ножка MOSI):
Спойлер
Код:
    NRF_SPIM0->PSEL.CSN  = SPIM_PSEL_CSN_CONNECT_Disconnected << SPIM_PSEL_CSN_CONNECT_Pos;
    NRF_SPIM0->PSEL.MISO = SPIM_PSEL_MISO_CONNECT_Disconnected << SPIM_PSEL_MISO_CONNECT_Pos;
    NRF_SPIM0->PSEL.SCK  = SPIM_PSEL_SCK_CONNECT_Disconnected << SPIM_PSEL_SCK_CONNECT_Pos;
    NRF_SPIM0->PSEL.MOSI = 0 << SPIM_PSEL_MOSI_PIN_Pos
                        | 1 << SPIM_PSEL_MOSI_PORT_Pos
                        | SPIM_PSEL_MOSI_CONNECT_Connected << SPIM_PSEL_MOSI_CONNECT_Pos;
    NRF_SPIM0->PSELDCX   = SPIM_PSELDCX_CONNECT_Disconnected << SPIM_PSELDCX_CONNECT_Pos;
    NRF_SPIM0->CSNPOL = SPIM_CSNPOL_CSNPOL_LOW << SPIM_CSNPOL_CSNPOL_Pos;
    NRF_SPIM0->CONFIG    = SPIM_CONFIG_ORDER_MsbFirst << SPIM_CONFIG_ORDER_Pos
                        | SPIM_CONFIG_CPHA_Leading << SPIM_CONFIG_CPHA_Pos
                        | SPIM_CONFIG_CPOL_ActiveHigh << SPIM_CONFIG_CPOL_Pos;
    NRF_SPIM0->FREQUENCY = SPIM_FREQUENCY_FREQUENCY_M8;
    NRF_SPIM0->TXD.PTR = (uint32_t)tx_spi_buffer;
    NRF_SPIM0->TXD.MAXCNT = 30;
    NRF_SPIM0->TXD.LIST = SPIM_TXD_LIST_LIST_Disabled << SPIM_TXD_LIST_LIST_Pos;
    NRF_SPIM0->DCXCNT = 0 << SPIM_DCXCNT_DCXCNT_Pos;
    NRF_SPIM0->INTENSET = SPIM_INTENSET_END_Set << SPIM_INTENSET_END_Pos;   // interrupt after stop transaction
    NRF_SPIM0->RXD.PTR = (uint32_t)rx_spi_buff;
    NRF_SPIM0->RXD.MAXCNT = 30;
    NRF_SPIM0->RXD.LIST = SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos;
    NRF_SPIM0->ORC = 0 << SPIM_ORC_ORC_Pos;
    NRF_SPIM0->ENABLE = SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos; 
    NRF_SPIM0->SHORTS = SPIM_SHORTS_END_START_Disabled << SPIM_SHORTS_END_START_Pos;
   

Код запуска проще некуда:
Спойлер
Код:
    NRF_SPIM0->EVENTS_END = 0x0UL;
    NRF_SPIM0->TASKS_START = SPIM_TASKS_START_TASKS_START_Trigger << SPIM_TASKS_START_TASKS_START_Pos;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: NRF51833 SPI
СообщениеДобавлено: Чт июн 30, 2022 18:00:04 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Я попроовал запустить просто SPI, без дма.
Настроил по простому:
Код:
    // Setup SPI0             
    NRF_SPI0->PSEL.SCK = 13 << SPI_PSEL_MOSI_PIN_Pos
                        | 0 << SPI_PSEL_MOSI_PORT_Pos
                        | SPI_PSEL_MOSI_CONNECT_Connected;      // Yes MOSI   
    NRF_SPI0->PSEL.MISO = SPI_PSEL_MISO_CONNECT_Disconnected;   // No MISO
    NRF_SPI0->PSEL.MOSI = 0 << SPI_PSEL_MOSI_PIN_Pos
                        | 1 << SPI_PSEL_MOSI_PORT_Pos
                        | SPI_PSEL_MOSI_CONNECT_Connected;      // Yes MOSI                       
    NRF_SPI0->FREQUENCY = SPI_FREQUENCY_FREQUENCY_M8;           // 8 Mbps                                                               /

    NRF_SPI0->CONFIG = SPI_CONFIG_ORDER_MsbFirst << SPI_CONFIG_ORDER_Pos
                        | SPI_CONFIG_CPOL_ActiveHigh << SPI_CONFIG_CPOL_Pos
                        | SPI_CONFIG_CPHA_Leading << SPI_CONFIG_CPHA_Pos;       // MSB first                                                           
    NRF_SPI0->INTENSET = SPI_INTENSET_READY_Disabled << SPI_INTENSET_READY_Pos;      // disable IRQ                                           
    NRF_SPI0->ENABLE = SPI_ENABLE_ENABLE_Enabled;                               // enable SPI

Теперь, чтобы запустить SPI, достаточно просто пихнуть данные в регистр.
Код:
NRF_SPI0->TXD = buffer[0];

Действительно, один байт передаётся.
Попробовал передать массив , ориентируясь по флагу EVENTS_READY,:
Код:
    NRF_SPI0->EVENTS_READY = 0x0UL;
    NRF_SPI0->TXD = buffer[0];
    for (int n = 1; n < 30; n++)
    {
        volatile uint32_t stat = 0;
        while (!stat)
        {
            stat = NRF_SPI0->EVENTS_READY;
        }
        NRF_SPI0->EVENTS_READY = 0x0UL;
        NRF_SPI0->TXD = buffer[n];
    }

Получил засаду: один байт передаётся, и процесс зависает в цикле проверки флага. Если дебагом остановлю, потом снова запущу, передаётся ещё один байт.
Смотрел в библиотеке NRF, там куча бесполезного кода, но принцип такой же. Пробовал добавить нопов в цикл - не помогло.
Что не так?

Добавлено after 2 hours 59 minutes 30 seconds:
Re: NRF51822 SPI
Вручную запустил. Обязательно чтение RXD в цикле. Даже с прерываниями работает. Эх, ДМА запустить бы, цены бы не было...

Добавлено after 4 hours 39 minutes 41 second:
Re: NRF51822 SPI
Победил, но осадочек остался.
Без включённого вывода CLK, SPI не запускается. Ну и порядок установки регистров некоторый должен быть.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y