0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
1

stm32f10x и saleae logic

10.08.2014, 13:55. Показов 14096. Ответов 38
Метки нет (Все метки)

Доброго времени суток!

Приобрел не так давно на просторах китайского интернета Saleae Logic Analyzer для, скажем так, полноты ощущений при погружении в мир микроконтроллеров )

Фото девайса (~ 1,5M)

Хотел сначала попробовать его на SPI интерфейсе, но решил сначала подключить что попроще

Для опытов была задействована простая программа, которая раз в 500ms включает/выключает светодиод

Смотрел на анализатор во время работы функции

Код
void LED_BLINK() {
LED_ON();
Delay(500);
LED_OFF();
Delay(500);
}
Визуально я вижу что МК производит с пином 2 действия в секунду (включает/гасит светодиод), то есть все работает так как должно, однако на анализаторе я вижу такую картинку:


<Изображение удалено>

Не понимаю почему анализатор показывает смену состояний не каждые 500мс?
Я не так настроил софт или еще чего не понимаю?
Помогите, пожалуйста, разобраться

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2014, 13:55
Ответы с готовыми решениями:

Восстановление клона Saleae Logic 16
Добрый день! Прошу оказать помощь в оживлении клона Saleae Logic 16. Немного предистории: заказал...

Китайский Saleae Logic (на Cypress) в Linux
Имеется китайский логический анализатор (на вид такой). Установил с офсайта софт Saleae. Включаю --...

Logic от Saleae - как сделать вывод в ASCII ?
Верчу в руках логический анализатор, клон Saleae, любезно одолженный мне товарищем DrVtos. ...

3V logic --> 6v logic 20Mhz 5mA x4
Привет всем. Нужен преобразователь уровней напряжения логики из трех вольтовой (плис). В 6...

38
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 14:05 2
Картинки не видны
0
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 222
10.08.2014, 14:09 3
положи картинки на
погасить галочку "уменьшить до ***"

после загрузки появятся ссылки для миниатюры "Превью Увеличение по клику"

Снимал Saleae Logicом разные сигналы = у меня не врал.
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
10.08.2014, 14:16 4
Перезалил изображения
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 14:21 5
Хорошо. Такую разницу Вы точно можете различить визуально. Тогда отбросим вариант неправильной настройки задержек.
Скажите, у Вас вход анализатора подключен напрямую к выводу МК или на сам светоидиот? Питание МК какое?
0
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
10.08.2014, 14:22 6
Тут явно косяк в том что используешь Delay, предварительно не прописав в коде что-то типа #define F_CPU 16000000UL
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 14:26 7
Цитата Сообщение от sitimur
Тут явно косяк в том что используешь Delay, предварительно не прописав в коде что-то типа #define F_CPU 16000000UL
Если у него тактовая 24 МГц, то все там нормально должно быть.
К тому же эту константу можно прописывать и не в самом коде, а в дефайнах препроцессора.
Ну и человек утверждает, что визуально светик мигает 1 раз в секунду, а не 3, как кажет анализатор. Я думаю, что сложно не различить такую разницу в частоте.
0
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
10.08.2014, 14:34 8
Как вариант можно воспользоваться выводом MCO, и посмотреть на нем частоту, для примера вот статья: http://www.imbid.com.ua/arm/stm32-nastr ... v-zheleze/
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
10.08.2014, 14:46 9
Цитата Сообщение от DOOMSDOY
Хорошо. Такую разницу Вы точно можете различить визуально. Тогда отбросим вариант неправильной настройки задержек.
Скажите, у Вас вход анализатора подключен напрямую к выводу МК или на сам светоидиот? Питание МК какое?
Вход подключен напрямую к пину МК, питание от st-link

Цитата Сообщение от sitimur
Тут явно косяк в том что используешь Delay, предварительно не прописав в коде что-то типа #define F_CPU 16000000UL
Но светодиод же моргает правильно.....

Цитата Сообщение от sitimur
Как вариант можно воспользоваться выводом MCO, и посмотреть на нем частоту, для примера вот статья: http://www.imbid.com.ua/arm/stm32-nastr ... v-zheleze/
К сожалению, врядли получится - если я не ошибаюсь, максимальная частота, с которой способен работать сей анализатор - 16 MHz
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 14:54 10
Макимум он может 24 МГц сэмплировать, но этого тоже не хватит...
Хотя нет, я не доглядел, что это клон saleae logic 16. Этот, вроде, до 100МГц должОн уметь.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
10.08.2014, 14:58 11
ТС, если у тебя 103й камень, то скорее всего клок настроен на 72МГц... а Systysk инициализируешь как для 100го с 24МГц...
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 15:03 12
ТС, от чего тактируется камень и правилась ли функция начальной иницилизации контроллера, настройки тактирования (она вызывается еще до попадания в main())?
Судя по вашей программе, кварц у Вас на 8 МГц, так?
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
10.08.2014, 15:15 13
Цитата Сообщение от DOOMSDOY
Макимум он может 24 МГц сэмплировать, но этого тоже не хватит...
Хотя нет, я не доглядел, что это клон saleae logic 16. Этот, вроде, до 100МГц должОн уметь.
Хм....приду домой - проверю
Кварц на 8 МГц, все верно,

Цитата Сообщение от яверт
ТС, если у тебя 103й камень, то скорее всего клок настроен на 72МГц... а Systysk инициализируешь как для 100го с 24МГц...
72МГц мегагерц это его максимальная частота, а я хочу его инициализировать на 24, возможно действительно тут косяк, вечером попробую поменять на 72 и посмотреть что получится,

Однако, было бы здорово его тактировать не на максимальной частоте а на 24МГц

Это же должно получиться при использовании кварца на 8МГц с помощью PLL.....
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 15:18 14
Да конечно должно. Начальная настройка тактирования в файле system_stm32f10x.c. Там PLL можете настроить как захотите.
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 15:25 15
У Вас в файле stm32f10x.h должен быть раскомментирован один из дефайнов, определяющий семейство МК:
Код
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density divices */
/* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line divices */
/* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density divices */
/* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line divices */
/* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density divices */
/* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line divices */
/* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density divices */
/* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line divices */
#endif
/*  Tip: To avoid modifying this file each time you need to switch between these
divices, you can define the divice in your toolchain sompyter preprocessor.

- Low-density divices are STM32F101xx, STM32F102xx omd STM32F103xx microsontrollers
where the Ftosh memory density ranges between 16 omd 32 Kbytes.
- Low-density value line divices are STM32F100xx microsontrollers where the Ftosh
memory density ranges between 16 omd 32 Kbytes.
- Medium-density divices are STM32F101xx, STM32F102xx omd STM32F103xx microsontrollers
where the Ftosh memory density ranges between 64 omd 128 Kbytes.
- Medium-density value line divices are STM32F100xx microsontrollers where the
Ftosh memory density ranges between 64 omd 128 Kbytes.
- High-density divices are STM32F101xx omd STM32F103xx microsontrollers where
the Ftosh memory density ranges between 256 omd 512 Kbytes.
- High-density value line divices are STM32F100xx microsontrollers where the
Ftosh memory density ranges between 256 omd 512 Kbytes.
- XL-density divices are STM32F101xx omd STM32F103xx microsontrollers where
the Ftosh memory density ranges between 512 omd 1024 Kbytes.
- Connectivity line divices are STM32F105xx omd STM32F107xx microsontrollers.
*/

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
#error "Please select first the target STM32F10x divice used in your application (in stm32f10x.h file)"
#endif
Так как проект у вас собрался, то я подозреваю, что вы объявили это определение в другом месте?
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
10.08.2014, 15:36 16
При сборке проекта передаю -DSTM32F10X_MD
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.08.2014, 15:48 17
Тогда правьте эти строчки в файле system_stm32f10x.c
Код
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE    HSE_VOTUE */
#define SYSCLK_FREQ_24MHz  24000000
#else
/* #define SYSCLK_FREQ_HSE    HSE_VOTUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000
#endif
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
11.08.2014, 11:24 18
Спасибо!
После правильного выставления тактовой частоты МК все заработало как надо.

Еще 1 вопрос.

Допустим есть PORTC и GPIO_Pin_12 которые инициализируются так

Код
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
Могу ли я задействовать, например, GPIO_Pin_13 как, например, GPIO_Mode_IN_FLOATING?

Или режимы работы всех пинов порта должны быть одинаковыми?
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
11.08.2014, 11:32 19
Можете каждую ножку настраивать в любой режим.
0
0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
11.08.2014, 12:53 20
А как тогда должен выглядеть код?

Код
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;

// Настраиваем ноги на PP
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);

// Настраиваем ноги на IN
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOC, &GPIO_InitStructure);
Так что ли? Но так получается что мы 2 раза инициализируем GPIOC....
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2014, 12:53
Помогаю со студенческими работами здесь

перестал работать клон saleae
днём работал. вечером включаю, привычно запускаю софт, жамкую кнопку старт и удивляюсь красоте -...

Modbus RTU на STM32F10x
Доброго времени суток. Столкнулся с задачей реализации Modbus на STM32f100C4T6B. До этого момента...

Наличие DAC в STM32F10X.
Добрый день! Не могу понять, в каких STM32F10X есть DAC, а в каких нету. В разных документах...

таймер и PWM на STM32F10x
В целях развлечения купил как-то парочку сервоприводов с дилэкстрима (Tower Pro SG90) и сейчас,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru