Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 21:18

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 23 ] 
Автор Сообщение
 Заголовок сообщения: "параллельная" работа SPI и USART
СообщениеДобавлено: 18 июл 2012, 21:28 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Доброе время суток !!!

в МК есть два массива.
В первый массив записываются данные из USART, в этоже время из второго массива данные пердаюся в SPI.
После передачи последнего элемента из второго массива (запись в первый уже закончилась, т.к. USART работает немного быстрее чем SPI от таймера), массивы меняю местами запись - второй, чтение - первый. И так по кругу

Код:
while (1)
   {
      if ((WorkUART1==STOP)   & (WorkDAC==STOP))
      {               
         IndexDataTemp = 0;
         IndexDataIn    = 0;   
   
         // индексы массивов
         NADD   = NADU;
         NADU   = !NADU;
      
         WorkUART1 = START;       
         WorkDAC      = START;                  
         
         GPIO_HIGH(UART1_GPIO, UART1_RtsPin);
         USART_SendData(USART1, USB485_BYTE_CONTROL_WAIT_DATA);         
         while (USART_GetFlagStatus(UART1, USART_FLAG_TC) == RESET);              
         GPIO_LOW(UART1_GPIO, UART1_RtsPin);   
         
         LED_GPIO->ODR ^= LED_Pin;                                           
      }                  



Чтение в SPI происходит по событию таймера
Код:
void TIM2_IRQHandler(void)
{       
   if (TIM2->SR & TIM_SR_UIF)
  {   
      TIM2->SR &= ~TIM_SR_UIF;     //сбросить флаг
     
      if (WorkDAC==START)
      {
         GPIO_LOW(SPId_GPIO, SPId_PIN_NSS);
      //while (SPI_I2S_GetFlagStatus(SPId, SPI_I2S_FLAG_TXE) == RESET);
         SPI_I2S_SendData(SPId, 0x00);    //   PD1-PD0   
         
         WordTemp2 = (DataIn_1P[NADD][IndexDataTemp])>>8;                     
      //while (SPI_I2S_GetFlagStatus(SPId, SPI_I2S_FLAG_TXE) == RESET);   
         SPI_I2S_SendData(SPId, WordTemp2);    //   D15-D08
         
         WordTemp2 = (DataIn_1P[NADD][IndexDataTemp]) & 0xFF;           
      //while (SPI_I2S_GetFlagStatus(SPId, SPI_I2S_FLAG_TXE) == RESET);     
         SPI_I2S_SendData(SPId, WordTemp2);    //    D07-D00
           
         while (SPI_I2S_GetFlagStatus(SPId, SPI_I2S_FLAG_BSY) != RESET);               
         GPIO_HIGH(SPId_GPIO, SPId_PIN_NSS);   
         
         IndexDataTemp++;
         if (IndexDataTemp==DataSIZE_1P)                 
            WorkDAC = STOP;         
      }                   
  } 
}   


если раскоментировать любую из
while (SPI_I2S_GetFlagStatus(SPId, SPI_I2S_FLAG_TXE) == RESET);
или добавить еще какую-нибудь операцию типа delay

то USART отваливается (помоему не успевает обрабатывать данные в прерывании USART1_IRQHandler)

Код:
void USART1_IRQHandler(void)
{
//uint16_t i;
   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
   {
      WordIn = USART_ReceiveData(USART1);      

      if (WordIn & 0xC0)      //   11XX XXXX - Word Data
      {
         // обрабока данных
                                    //   в основном сдвиг и суммирование         
      }
      else                           //   00XX XXXX - Word control
      {
         switch (WordIn)
         {
            /*
            куча всяких команд управления
            */

            // байт окончания пакета
            case USB485_BYTE_CONTROL_GIVE_DATA_DAC:                           
               WorkUART1 = STOP;               
            break;

            default:
               WordTemp = 0;         
         break;   
         }         
      }            
   }
}


вопрос такой
а не слишком ли я много хочю от МК который работае на 48МГц,
и можно ли посчитать процессорное время для TIM2_IRQHandler ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 19 июл 2012, 21:40 
Старожил
Аватара пользователя

Зарегистрирован: 17 мар 2011, 21:06
Сообщения: 682
Откуда: /ukraine/uman
nkment писал(а):
а не слишком ли я много хочю от МК который работае на 48МГц,
и можно ли посчитать процессорное время для TIM2_IRQHandler ?

Все зависит от пропускной способности самого USART и SPI, прежде всего. Точно высчитать по тактам не получится, т.к. в stm32 есть конвейер команд, который выполняет не по 1 команде за 1 такт. Возможно здесь какраз тот случай, когда надо использовать DMA?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 19 июл 2012, 22:08 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Цитата:
Все зависит от пропускной способности самого USART и SPI
можете поподробне,
пробовал использовать SPI и USRT на разных шинах APB1 и APD2 результат такойже

на счет DMA, пока не понимаю как его можно прикрутить к таймеру и SPI, но мысь хорошая Правда рамер массива увеличится на треть, т.к. передаю по SPI в ЦАП 16 бит данных + 8бит "мусора"
Код:
SPI_I2S_SendData(SPId, 0x00);    //   PD1-PD0
, а так придется эти 8бит в массив для DMA пихать, или можно сделать кок-то иначи ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 19 июл 2012, 23:34 
Старожил
Аватара пользователя

Зарегистрирован: 17 мар 2011, 21:06
Сообщения: 682
Откуда: /ukraine/uman
С STM32 не работал лично.
Пропускная способность влияет на выполнение кода если для своевременной передачи необходимо использовать много ресурсов процессора, например: (цифры отбалды)
для передачи данных SPI с пропускной способностью(скоростью, как часто мы все пишем) 1Мбит/сек, необходима частота процессора, при работе на прерываниях 1 Мгц(помним, что числа отбалды), для корректной передачи при той-же пропускной способности USART, допустим, тоже отхавает 1МГц. Итого, если у нас частота процессора 2МГц, то, теоретически, у нас ТЗ получится, но никаких других действий процессор выполнять не сможет из-за отсутствия свободного процессорного времени.
А DMA используют, дабы передавать данные из одного смещения памяти в другое "паралельно" работе процессора.
Может смутно и непонятно, если что нужно подробнее - опишу в своем понимании, Вы ТЗ бОлее уточните.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 20 июл 2012, 17:43 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Я не понял, у тебя данные по UART и/или SPI синхронно льются или блоками?
Видимо UART блоками, а SPI синхронно или нет?
Вообще надо работать на DMA , там я насколько помню есть прерывание на половине буфера.
Т.е. в пока SPI читает первую половину буфера, UART во вторую через DMA записывает данные, далее когда SPI достиг половины буфера, по прерыванию DMA переставляем указатели для SPI и UART, тогда UART начинает записывать в первую половину, а SPI читает до конца, DMA по концу буфера генерит прерывание, переставляем указатели и заново. Естественно надо чтобы UART притормаживал источник если кончился буфер.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 20 июл 2012, 20:19 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Цитата:
Видимо UART блоками, а SPI синхронно или нет?

почти так
UART принмает блок 8*1024 байт, со скоростью ~2МГц/10
из 3 байт МК собирает одно 16-разрядное солво и записывает его в масив для SPI, длинна этого массива 2730 слов, массива два
в это время из другого массива данные передаются по SPI
начало передачи в SPI из массива 2730 происходит по таймеру (48кГц)
в SPI данные передаются пачками по 3 байта, 16-разрядное солво разбивается на 2 байта + байт управления для ЦАПа.
После пого, как в SPI будут отправлены все 2730 слов, отправляется команда на передачу ПК нового блока 8*1024 байт, и указатели на массивы меняются местами

И вот как эту всю кашу пропустить через DMA, я не представляю
вообще для меня DMA пока темный лес :)

Сегодня переписал TIM2_IRQHandler(void), отказался от библиотечных функций сделал все через регистры.
Код:
void TIM2_IRQHandler(void)
{      
   if (TIM2->SR & TIM_SR_UIF)
  {   
      TIM2->SR &= ~TIM_SR_UIF;     //сбросить флаг
      
      if (WorkDAC==START)
      {
         GPIO_LOW(SPId_GPIO, SPId_PIN_NSS);            
      
         while (!(SPId->SR & SPI_SR_TXE));
         SPId->DR = 0x00;                     //   Send Data in SPId PD1-PD0             
         
         WordTemp2 = (DataIn_1P[NADD][IndexDataTemp])>>8;      
         while (!(SPId->SR & SPI_SR_TXE));
         SPId->DR = WordTemp2;               //   Send Data in SPId D15-D08            
         
         WordTemp2 = (DataIn_1P[NADD][IndexDataTemp]) & 0xFF;      
         while (!(SPId->SR & SPI_SR_TXE));
         SPId->DR = WordTemp2;             //    Send Data in SPId D07-D00            
      
         while (!(SPId->SR & SPI_SR_TXE));
         while ((SPId->SR & SPI_SR_BSY));                    
                  
         GPIO_HIGH(SPId_GPIO, SPId_PIN_NSS);   
         
         IndexDataTemp++;
         if (IndexDataTemp==DataSIZE_1P)                  
            WorkDAC = STOP;         
      }                   
  } 
}   


В результате помимо правильной передачи 3 байт в SPI удалось завести еще один таймер (тоже 48 кГц), и подрыгать ногой МК :)
Прицепить к этоку таймеру прием данных от внутреннего АЦП уже не получилость (опять зависает USART).


Я вот думаю, что передача 3 подготовленных байт в SPI через DMA, решит много проблем, убрав кучу while, которые жрут процессорное время
буду копать в этом направлении


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 21 июл 2012, 11:35 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
DMA очень простая вещь для автоматизации приема/передачи блоков данных.
Например SPI должен передать буфер данных наружу:
- стартуешь передачу
- SPI говорит DMA "дай байт"
- DMA читает байт, передает его в регистр DR SPI, и увеличивает указатель буфера на 1
- SPI передает байт наружу
- как только SPI закончил передачу байта, он снова говорит DMA "дай байт"
- т.д.
И всё автоматически, точно так же на приём.

_________________
Какое небо голубое....(с) лиса Алиса


Последний раз редактировалось hardegor 21 июл 2012, 12:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 21 июл 2012, 12:00 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Я правильно понял что:
- скорость приема UART ~2МГц/10=200Кбит
- скорость передачи SPI 48кГц*3*8бит=1152Кбит
Т.е. прерывание таймера SPI вызывается так часто, что прерывание UART почти не исполняется, а постоянно ждет когда выполнится прерывание таймера SPI. Всяко надо переходить на DMA для SPI.
Еще я не понял зачем тебе шаманство c чтением 2-х байтных слов и сдвигами в прерывании таймера SPI , не проще ли читать буфер по-байтно?

Можешь прикинуть такты выполнения основных команд и прерываний, а поможет такая книжечка Hitex.The Insider's Guide to the STM32 ARM-based Microcontroller

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 21 июл 2012, 13:41 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Цитата:
- скорость приема UART ~2МГц/10=200Кбит

здесь я некоректно расписал, скорость по каналу 2МГц, одни байт состоит толи из 10 или из 11 Бод (старт + 8 инфы + 1-2 стопа) точно не помню,
так что ~2МГц/10=200КБай
а в остальном вы абсолютно правы

Цитата:
Еще я не понял зачем тебе шаманство c чтением 2-х байтных слов и сдвигами в прерывании таймера SPI

можно это конечно перебросить в прерывание USATR, но кол-во операцый не поменяется:
- принял 3 байта (у меня в каждом байте признак (байт с командой или байт с кусоком данных))
- сделал из них 16 разрадное слово
- разбил на 2 байта
- добавил один байт управления для АЦП
- передал 3 байта в SPI

Я изначально расчитывал пихать 16-разрядное слово целиком, да с ЦАПом вышел прокол, пришлось городить вот это все

ЗЫ
сапсибо за книжку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 21 июл 2012, 21:18 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Гм, с таким алгоритмом у тебя процессор работает на пределе. Вообще-то с этих расчетов и надо было начинать проектирование системы.
Смотри, процу надо принять фактически 2Мбит, и отправить 1,2Мбит, соответственно в режиме поллинга на обработку и пересылку одного байта этих данных процессор может выделить в пределе 48Мгц/2Мбит = 24 такта, если команда исполняется за 1 такт - это 24 команды на "всё про всё", т.е. прием, обработка, передача, плюс все переходы по прерываниям...
Но, если передачу/прием данных возложить на ДМА, передача и прием данных будет производится аппаратно, тогда процессору надо только обрабатывать прерывания в конце каждого блока данных.
Кстати, почитай application notes на сайте ST, сильно помогает, например вот для DMA c примерами
http://www.st.com/internet/com/TECHNICA ... 160362.pdf
http://www.st.com/internet/com/SOFTWARE ... an2548.zip

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 15:53 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Такой вопрос: пишу четкое значение в регистр передачи по SPI1, а записывается в отладчике Keil вообще левое значение? ЧТо это может быть?
Смотрел все флаги - должно быть све четко, передатчик не занят..

Картина До и после загрузки занчения в регистр пошагово. В регистре DR не результат 0x0000 !


Вложения:
2.png
2.png [ 234.51 Кб | Просмотров: 6927 ]
3.png
3.png [ 233.25 Кб | Просмотров: 6927 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 16:22 
Старожил
Аватара пользователя

Зарегистрирован: 17 мар 2011, 21:06
Сообщения: 682
Откуда: /ukraine/uman
При отладке SPI вроде бы как не останавливается на бряке, т.е. при остановке ядра периферия продолжает жить своей жизнью, пробуй записывать единожды лишь 1 байт и тогда проверяй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 16:59 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Тобишь периферия не дружит с отладкой в конкретный момент, получается((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 17:01 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
В соседней теме обсуждали viewtopic.php?f=35&t=11145

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 21:15 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
hardegor спасибо за application notes

попробовал реализовать все через DMA,

мысль была такая :
- настраиваю DMA1_Channel3, тк на нем сидит SPI1_TX
- настраиваю SPI1
- настраиваю TIM3, TIM_Channel_1 и разрешаю TIM_DMACmd(TIM3, TIM_DMA_Update, ENABLE);,
пробовал через TIM_DMACmd(TIM3, TIM_DMA_CC4, ENABLE); на выхде полная тишина
- настраиваю прерывание TIM_ITConfig(TIM3, TIM_IT_CC4, ENABLE);, хотел по нему дергать ногой NCC ЦАП

собственно код:
Show


в результате получил нечто старнное
DMA по прерыванию от счетчика отпрабляет в SPI не пачку из 5 байт, а только 1 байт
После отправки всего массива (за 5 прерываний) DMA останавливается, TIM3 дальше работает
что сделал не так и почему не работает TIM_DMACmd(TIM3, TIM_DMA_CC4, ENABLE); не могу понять

Окончательно добило, что с SPI начинают сыпаться данные раньше чем начинает дерготься нога NCC ЦАП


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 22:10 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Если ты хочешь чтобы по прерыванию от счетчика SPI передал с помощью DMA буфер из 5 байт, так и делай - в прерывании таймера стартуй SPI, а он уже после каждого TXE=1 будет дергать DMA который будет перекладывать данные из буфера в SPI->DR. Почитай в reference manual раздел "SPI communication using DMA (direct memory addressing)"
А причем здесь NSS ЦАП? его разве не SPI выставляет?
Я еще не до конца понимаю твою задачу, я понял так, что UART принимает байтики, а потом SPI эти байтики передает парами в DAC, добавляя к каждой паре еще байт команды для DAC, так? Т.е. какая-то специальная обработка данных между UART и SPI не нужна? А таймер задает задержку между пакетами из 3 байт для DAC, так?
Выглядит как воспроизведение цифрового звука :) Может быть тебе нужна функциональность I2S, которая как раз это всё умеет на уровне железа? Какой процессор используешь?

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 23 июл 2012, 23:44 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Цитата:
А причем здесь NSS ЦАП? его разве не SPI выставляет?

я имел ввиду CS, аппаратного управления которым для SPI нет,
вот и приходится извращяться:
- по таймеру прграммно установить CS
- передать все данные
- сбросить CS по прерыванию SPI_I2S_IT_RXNE

Цитата:
Т.е. какая-то специальная обработка данных между UART и SPI не нужна?

нужна
- из UART приходят 3 байта
<11XX XXXX>_<10XX XXXX>_<01XX XXXX>
11XX XXXX = D15-D10
100X XXXX = D9-D5
010X XXXX = D4-D0
- собираю в одно слово <D15-D0>
- разбиваю на 3 байта
<0000 00XX>_<D15-D8>_<D7-D0>
- отправляю в SPI

Цитата:
Может быть тебе нужна функциональность I2S
ЦАП (DAC8551) поддерживает SPI™, QSPI™, Microwire™

Цитата:
Какой процессор используешь?
STM32F103CB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 24 июл 2012, 00:35 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
почитал reference manual,
до этого и не знал о сущесвовании такой полезной книженции :)

и решил пока сделать все на прерваниях

Код:
void TIM2_IRQHandler(void)
{      
   if (TIM2->SR & TIM_SR_UIF)
  {   
      TIM2->SR &= ~TIM_SR_UIF;     //сбросить флаг
      
      if (WorkDAC==START)
      {
         GPIO_LOW(SPId_GPIO, SPId_PIN_NSS);               
         
         NEAD = 0;
         WordSPId[0] = 0x00;   
         WordSPId[1] = (DataIn_1P[NADD][IndexDataTemp])>>8;;      
         WordSPId[2] = (DataIn_1P[NADD][IndexDataTemp]) & 0xFF;          
      
         //while (!(SPId->SR & SPI_SR_TXE));
         SPId->DR = WordSPId[NEAD];                     //   Send Data in SPId PD1-PD0            
      
         IndexDataTemp++;
         if (IndexDataTemp==DataSIZE_1P)                  
            WorkDAC = STOP;         
      }                   
  } 
}   


Код:
void SPI1_IRQHandler(void)
{
   if (SPI_I2S_GetITStatus(SPId, SPI_I2S_IT_RXNE))
  {
    uint16_t tmp = SPI_I2S_ReceiveData(SPId); // сброс флага RXNE.
   
      if (NEAD == 2)
         GPIO_HIGH(SPId_GPIO, SPId_PIN_NSS);   
      else
      {
         NEAD++;
         SPId->DR = WordSPId[NEAD];               //   Send Data in SPId             
      }      
  }   
}


(всеравно при использовании DMA надо или во while тупить пока BSY=0, или использовать теже прерывания по SPI_I2S_IT_RXNE, чтобы CS сбросить)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 24 июл 2012, 03:05 
Старожил
Аватара пользователя

Зарегистрирован: 17 мар 2011, 21:06
Сообщения: 682
Откуда: /ukraine/uman
Работа на прерываниях в данном случае - это очень правильно, проца хавает меньше.
Так что там, хеппи-енд ? все работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 24 июл 2012, 10:49 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
В общем почитай по I2S(это не I2C!!!), он например есть в STM32F103RC http://www.st.com/internet/com/TECHNICA ... 171190.pdf
I2S - это SPI, только заточен под аудио, там есть частота 48кГц, позволяет синхронно посылать блоки 16, 24 и 32 бит данных, соответственно и CS он опускает на весь блок.
По диаграммам видно что твой DAC его поддерживает. Но лучше уточнить. Тогда вообще не надо морочится с таймером, всё будет аппаратно происходить.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 25 июл 2012, 00:04 
Заглядывает иногда

Зарегистрирован: 12 фев 2012, 15:20
Сообщения: 50
Цитата:
Так что там, хеппи-енд ? все работает?

да все работает
свем СПАСИБО за помощь

теперь займусь приемом сигнала :)
внутренний АЦП =>rs485=> ПК
ну тут все проще

hardegor, спасибо за наводку на I2S, но к сожалению у меня сейчас Medium-density devices, а там I2S нет, это уже вторая подстава на этом камне (первая была 20 KB RAM),
вообщем в следущем образце буду использовать High-density devices


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 08 авг 2012, 15:18 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Привет!
У кого завалялся кусок кода для передачи и соотв. приема данных нецелого типа float, double по USART?
Заранее благодарен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "параллельная" работа SPI и USART
СообщениеДобавлено: 08 авг 2012, 17:18 
Старожил
Аватара пользователя

Зарегистрирован: 17 мар 2011, 21:06
Сообщения: 682
Откуда: /ukraine/uman
Koder писал(а):
Привет!
У кого завалялся кусок кода для передачи и соотв. приема данных нецелого типа float, double по USART?
Заранее благодарен.

Вы наверное неверно представляете себе передачу, передаются всего лишь байтики а во флоате или целом вы уже сами додумываетесь, исходя из протокола выбранного вами для передачи данных.


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


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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB