реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> spi и usb на stm32
Tapochka
сообщение Sep 25 2013, 12:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



Здравствуйте. Моя задача такова: по spi принимать/отдавать данные с АЦП и по usb передавать принятые данные на hyperterminal на компе(комп должен видеть плату как виртуальный com порт) на плате stm32f4discovery. По отдельности спи и виртуальный com порт работают нормально, но вместе com порт не инициализируется, а комп видит плату как неисправное usb устройство. Помогите разобраться в чем может быть проблема т.к. ноги otg и spi-шные не пересекаются, вроде сто раз проверил(spi3 - PC10, PC11, PC12), просто ума не приложу в чем может быть проблема.

Код main для организации виртуального com порта и вывод напечатанных символов с клавы на терминал:

Код
#include "stm32f4xx.h"
#include "usbd_cdc_vcp.h" // подключаем USB CDC

__ALIGN_BEGIN USB_OTG_CORE_HANDLE  USB_OTG_dev __ALIGN_END;

const char ch3[]="receive 3\x0D\x0A";
const char ch4[]="получено 4\x0D\x0A";
char       ch5[]="receive 5\x0D\x0A";
char       ch6[]="receive 6\x0D\x0A";

int main(void)
{
    SystemInit(); // настройки тактирования

    // включаем usb
    USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb);

    while (1){

        if(usb_cdc_kbhit()){ // проверка: приняты данные?
            char c;
            c = usb_cdc_getc();  // получение байта с usb
            switch(c){ // разбор принятого символа
                case '3':
                    usb_cdc_printf((char *)ch3); // строки на хост
                    break;
                case '4':
                    usb_cdc_printf((char *)ch4);
                    break;
                case '5':
                    usb_cdc_printf(ch5);
                    break;
                case '6':
                    usb_cdc_printf(ch6);
                    break;
            }
        }
    }
}


прикрепляю полный проект на кокосе, proba6 главный
Прикрепленные файлы
Прикрепленный файл  ______.rar ( 461.15 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post
nx6310
сообщение Sep 25 2013, 16:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



попробуй стек увеличить. может поможет.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 25 2013, 17:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я не смотрел код, так что идеи из раздела пальцем в небо, но вдруг помогут.

когда-то я делал УСБ ручками и если во время "регистрации" устройства в винде, у меня возникали паузы на ответ контрлером больше определенных, заканчивалось все состоянием неисправное устройство. У меня паузы были вызваны попытками выслать отладочные данные. Может у вас в процесс регистрации влазит ваш SPI с АЦП, возникает паузы и готово? Паузы на ответы там разрешены мизерные, все должно быть практически мгновенно.

И второе, где-то тут проходила информацию про ножку УСБ которая типа сигнализирует о наличии конекта, если ее как-то предержать все падало, а она включалась автоматически как ей задавалось направление, не зависимо от функций. Я не очень точно помню тему, проверьте ножки УСБ которые обычно диодиками машут, ваш SPI или АЦП не попало на какую либо такую...
Go to the top of the page
 
+Quote Post
A.Lex
сообщение Sep 26 2013, 04:21
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 138
Регистрация: 27-12-11
Пользователь №: 69 107



Цитата(Golikov A. @ Sep 25 2013, 20:37) *
И второе, где-то тут проходила информацию про ножку УСБ которая типа сигнализирует о наличии конекта, если ее как-то предержать все падало, а она включалась автоматически как ей задавалось направление, не зависимо от функций.


Это интересно. Название топика не подскажите?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 26 2013, 07:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



http://electronix.ru/forum/index.php?showtopic=113683

во чудом нашелsm.gif...
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 26 2013, 11:10
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



спасибо большое, однако нету в моей библиотеке дефайна VBUS_SENSING_ENABLED, да и по схеме проверил PC10, PC11, PC12 никак на дискавери не связаны с usb. не в пинах счастье sad.gif

Цитата
Может у вас в процесс регистрации влазит ваш SPI с АЦП, возникает паузы и готово? Паузы на ответы там разрешены мизерные, все должно быть практически мгновенно.

видимо в этом и дело

Сообщение отредактировал Tapochka - Sep 26 2013, 11:12
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 26 2013, 11:28
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(Tapochka @ Sep 26 2013, 15:10) *
спасибо большое, однако нету в моей библиотеке дефайна VBUS_SENSING_ENABLED, да и по схеме проверил PC10, PC11, PC12 никак на дискавери не связаны с usb. не в пинах счастье sad.gif


видимо в этом и дело


ну это легко проверить, сделайте кнопку по которой начинается работа с АЦП, а до нажатия пусть молчит и не пытается даже что-то делать... сразу станет все понятно
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 26 2013, 12:01
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



сделал кнопку - vcp нормально не определяется хоть при нажатой, хоть нет. неужели дело в портах((( подскажите пожалуйста что думаете, просто ума не приложу как связаны могут быть spi и usb ногами в моем примере
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Sep 26 2013, 12:16
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



что-то я в proba6.c не увидел обработчик SPI3_IRQn.
Go to the top of the page
 
+Quote Post
A.Lex
сообщение Sep 26 2013, 12:31
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 138
Регистрация: 27-12-11
Пользователь №: 69 107



Цитата(Golikov A. @ Sep 26 2013, 10:17) *


Спасибо!
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 26 2013, 12:35
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



Цитата
что-то я в proba6.c не увидел обработчик SPI3_IRQn.

а что следует в обработчике делать по-вашему?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 26 2013, 12:57
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



если кнопка не помогла, значит правда стэк кончился...
или же у вас возникает какое-то прерывание и вы в нем повисаете...

нет возможности на ком порт слать данные по ходу работы, хоть локализовать где дохнет...
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 26 2013, 13:10
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



spi-шных прерываний то нету в проекте, если только usb-шные свои, в файле usb_bsp.c...
а как стек то увеличить?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 26 2013, 15:23
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



не... ну это плохой вопрос...
понятно дело что стэкоувеличивалкой!

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

к сожалению в кокосе не силен, так что ищите... читайте описания
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 27 2013, 08:45
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



нашел как увеличить стек http://www.coocox.org/forum/topic.php?id=917
однако не могу найти файл arm-gcc-link.ld, где он находится хоть примерно?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 16:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016