0 / 0 / 0
Регистрация: 07.08.2014
Сообщений: 25
|
|
1 | |
stm32f10x и saleae logic10.08.2014, 13:55. Показов 14096. Ответов 38
Метки нет Все метки)
(
Доброго времени суток!
Приобрел не так давно на просторах китайского интернета Saleae Logic Analyzer для, скажем так, полноты ощущений при погружении в мир микроконтроллеров ) Фото девайса (~ 1,5M) Хотел сначала попробовать его на SPI интерфейсе, но решил сначала подключить что попроще Для опытов была задействована простая программа, которая раз в 500ms включает/выключает светодиод Смотрел на анализатор во время работы функции Код
void LED_BLINK() { LED_ON(); Delay(500); LED_OFF(); Delay(500); } <Изображение удалено> Не понимаю почему анализатор показывает смену состояний не каждые 500мс? Я не так настроил софт или еще чего не понимаю? Помогите, пожалуйста, разобраться
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
10.08.2014, 13:55 | |
Ответы с готовыми решениями:
38
Восстановление клона Saleae Logic 16 Китайский Saleae Logic (на Cypress) в Linux
3V logic --> 6v logic 20Mhz 5mA x4 |
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 |
![]() К тому же эту константу можно прописывать и не в самом коде, а в дефайнах препроцессора. Ну и человек утверждает, что визуально светик мигает 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 |
![]() ![]() ![]()
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 |
![]() Кварц на 8 МГц, все верно, ![]() Однако, было бы здорово его тактировать не на максимальной частоте а на 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); Или режимы работы всех пинов порта должны быть одинаковыми?
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);
0
|
11.08.2014, 12:53 | |
Помогаю со студенческими работами здесь
20
перестал работать клон saleae Modbus RTU на STM32F10x Наличие DAC в STM32F10X. таймер и PWM на STM32F10x Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |