Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошивка мк FRDM-kw40z
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
mrprim
Доброго времени суток уважаемые форумчане.
Вышло так что первая плата с которой мне пришлось начать работать это kw40z и в дополнение к покупке usb-kw40z
для меня проблемно выловить нужные части кода в демо софте, что бы изменить то что я хочу, А голых примеров в интернете я не нашел.
Прошу о помощи, помогите со скилетом чипа (помигать, помигать после нажатия кнопок, помигать по таймеру и другие простейшие вещи)
очень хочется разобраться а наглядного примера, что и куда жать, нету
можно скайп, вк или тут
если если ребята которые уже работали и могут помочь то я бы даже мог взять пару часов уроков в скайпе, естественно не бесплатно!

извините если не в том разделе
AlexandrY
Цитата(mrprim @ Apr 25 2016, 23:45) *
Доброго времени суток уважаемые форумчане.
Вышло так что первая плата с которой мне пришлось начать работать это kw40z и в дополнение к покупке usb-kw40z
для меня проблемно выловить нужные части кода в демо софте, что бы изменить то что я хочу, А голых примеров в интернете я не нашел.


Да демо код для MKW40Z простотой не отличается.
Они там сразу делают многозадачность на FreeRTOS или на своем самодельном движке OSA.
Поскольку их библиотека Host Bluetooth без многозадачности не работает.

НО для начала вам надо сказать какими инструментами пользуетесь:
Какая IDE (IAR, Keil, Kinetis Design Studio...)?
Какой SWD адаптер (J-Link, ULink, Open SDA...)?
Схема платы ?
mrprim
Цитата(AlexandrY @ Apr 26 2016, 05:51) *
Да демо код для MKW40Z простотой не отличается.
Они там сразу делают многозадачность на FreeRTOS или на своем самодельном движке OSA.
Поскольку их библиотека Host Bluetooth без многозадачности не работает.

НО для начала вам надо сказать какими инструментами пользуетесь:
Какая IDE (IAR, Keil, Kinetis Design Studio...)?
Какой SWD адаптер (J-Link, ULink, Open SDA...)?
Схема платы ?

Пользуюсь IAR Но стал подозревать что слишком тяжко без автозаполнения, Если реально к примеру на AS6 то я бы с удовольствием перешел(просто не нашел примера как на AS прошивать камень, а как это делать на IAR есть пример)
Вот пдф схема камня http://cache.nxp.com/files/soft_dev_tools/...KW40Z-C2SCH.pdf
и на сколько я понял адаптер OpenSDA
AlexandrY
Цитата(mrprim @ Apr 26 2016, 08:34) *
Пользуюсь IAR Но стал подозревать что слишком тяжко без автозаполнения, Если реально к примеру на AS6 то я бы с удовольствием перешел(просто не нашел примера как на AS прошивать камень, а как это делать на IAR есть пример)
Вот пдф схема камня http://cache.nxp.com/files/soft_dev_tools/...KW40Z-C2SCH.pdf
и на сколько я понял адаптер OpenSDA


Что такое "автозаполнение"?
Что такое AS6?

Есть проблемы с выбором средств разработки?

mrprim
Цитата(AlexandrY @ Apr 26 2016, 06:42) *
Что такое "автозаполнение"?
Что такое AS6?

Есть проблемы с выбором средств разработки?

Да извините, автозаполнение это когда начинаешь писать слово кода а оно дописывается или тебе подсказывают какие методы ты создавал и можешь добавить и тд
AS6 это AVR atmel studio 6, нашел пару уроков на нём, но в создании проекта, не знаю как подключить именно мой камешек
Immortal_Buka
поставить KDS и скачать SDK вот тут вот(требует регистрации, если не будет давать качать - страну укажите любую европейскую), в нём примеров куча должна быть
mrprim
Цитата(Immortal_Buka @ Apr 26 2016, 07:30) *
поставить KDS и скачать SDK вот тут вот(требует регистрации, если не будет давать качать - страну укажите любую европейскую), в нём примеров куча должна быть

Спасибо скачал всё сделал, единственная проблема только что при создании проекта в KDS отсутствует выбор конкретно моего камня.
или если не создавать новый проект а запустить пример то как прошить сам чип и запустить его на нём через TERM?
AlexandrY
Цитата(mrprim @ Apr 26 2016, 10:13) *
Спасибо скачал всё сделал, единственная проблема только что при создании проекта в KDS отсутствует выбор конкретно моего камня.
или если не создавать новый проект а запустить пример то как прошить сам чип и запустить его на нём через TERM?


Это вам совершенно не то посоветовали.
Качать нужно KW40Z_Connectivity_Software_1.0.0
mrprim
Цитата(AlexandrY @ Apr 26 2016, 08:52) *
Это вам совершенно не то посоветовали.
Качать нужно KW40Z_Connectivity_Software_1.0.0

Да, спасибо.
С конект тестом я уже разобрался, и пакеты с чипа на чип по отправлял и немного покопался в интерфейсе.
вот после него у меня и возникли вопросы(внутри очень много кода в котором новичку разобраться сложно). Я не понимаю как создать самый простенький класс с методами(таймер, мигание светодиодом, включение светодиода по нажатию одной из кнопок) и что бы всё это потом можно было закинуть в чип и проверить.
А лезть в код конективити_теста просто как в лабиринт
AlexandrY
Цитата(mrprim @ Apr 26 2016, 11:35) *
Да, спасибо.
С конект тестом я уже разобрался, и пакеты с чипа на чип по отправлял и немного покопался в интерфейсе.
вот после него у меня и возникли вопросы(внутри очень много кода в котором новичку разобраться сложно). Я не понимаю как создать самый простенький класс с методами(таймер, мигание светодиодом, включение светодиода по нажатию одной из кнопок) и что бы всё это потом можно было закинуть в чип и проверить.
А лезть в код конективити_теста просто как в лабиринт


IAR OpenSDA не поддерживает.

У вас есть варианты:
- перепрошить отладочный чип на вашей плате на CMSIS DAP , Freescale дает такую прошивку. Если, конечно, плата FRDM-KW40Z поддерживает заливку прошивок на свой виртуальный диск.
- приобрести J-Link или какой-нибудь его клон
- приобрести ST-Link , он тоже может программировать Kinetis, проверено

В двух последних случаях надо будет сделать переходник типа такого :
Нажмите для просмотра прикрепленного файла

Потом исследовать и писать код прямо в IAR не рекомендую.
Возьмите что нибудь типа Understand for C или Visual Studio.
Я использую SlickEdit
Immortal_Buka
Цитата(mrprim @ Apr 26 2016, 10:13) *
Спасибо скачал всё сделал, единственная проблема только что при создании проекта в KDS отсутствует выбор конкретно моего камня.
или если не создавать новый проект а запустить пример то как прошить сам чип и запустить его на нём через TERM?


В КДС можно экспортировать демо проекты из СДК.
Проще создать свой проект из готового примера.
Прошить - там есть значок с молнией - "flash from file..." - там можно выбрать конфигурацию в соответствии с прошивкой отладчика.
AlexandrY
Цитата(mrprim @ Apr 26 2016, 11:35) *
С конект тестом я уже разобрался, и пакеты с чипа на чип по отправлял и немного покопался в интерфейсе.
вот после него у меня и возникли вопросы(внутри очень много кода в котором новичку разобраться сложно). Я не понимаю как создать самый простенький класс с методами(таймер, мигание светодиодом, включение светодиода по


Кстати, у меня USB-KW40Z в режиме снифера виснет через несколько секунд после начала записи потока.
Если коннект между дивайсами которые снифер прослушивает прервать и возобновить, то снифер оживает.

У вас так не происходит?
mrprim
Цитата(AlexandrY @ Apr 27 2016, 10:40) *
Кстати, у меня USB-KW40Z в режиме снифера виснет через несколько секунд после начала записи потока.
Если коннект между дивайсами которые снифер прослушивает прервать и возобновить, то снифер оживает.

У вас так не происходит?

Я пока с USB не игрался, вот пытаюсь с пинами на основной плате научится работат, кстати IAR с opensda вроде как прекрасно работает.
У меня вот вопрос возник: в классе Gpio_pins.h прописана функция свитчера
Код
gpio_input_pin_user_config_t switchPins[] = {
    {
        .pinName = kGpioSW3,
        .config.isPullEnable = true,
        .config.pullSelect = kPortPullUp,
        .config.isPassiveFilterEnabled = false,
        .config.interrupt = kPortIntDisabled,
    },

так вот у меня вопрос, как в Main() классе мне проверить именно эту кнопку, на то, нажата ли она?
AlexandrY
Цитата(mrprim @ Apr 29 2016, 20:45) *
кстати IAR с opensda вроде как прекрасно работает.
У меня вот вопрос возник: в классе Gpio_pins.h прописана функция свитчера
так вот у меня вопрос, как в Main() классе мне проверить именно эту кнопку, на то, нажата ли она?


Значит в opensda уже прошит был CMSIS DAP.

А проверяются кнопки элементарно.
Вот пример для порта A:
Код
  if (GPIOA_PDIR & ( 1 << (kGpioSW3 & 0xFF) ))
  {
    // Действие если на выводе kGpioSW3 высокий уровень
  }
  else
  {
    // Действие если на выводе kGpioSW3 низкий уровень
  }


Рекомендую чтобы не блуждать по директориям KW40Z_Connectivity_Software сделать себе отдельный проект и собрать туда весь набор исходников со своей понятной структурой без всяких внешних зависимостей.

Я так сделал.
Вот мой пример демо приложения для HID дивайса на плату usbkw40z - https://github.com/Indemsys/K66BLEZ1/tree/m...KW40/HID_device
Все собрано и переструктурировано. Никаких зависимостей от KSDK. Включена и FreeRTOS.
Нет лишнего этапа сборки библиотеки с HAL.
Пример начинает работать сразу без захода в IDLE. А то у стандартных примеров в Connectivity_Software надо еще что-то нажимать чтобы вывести из IDLE.

А вот с самим снифером на usbkw40z беда. Их софт сносит крышу у Windows 10. Т.е. при попытке создать виртуальный Ethernet интерфейс для снифера у Windows 10 вылазит синий экран.

mrprim
Цитата(AlexandrY @ Apr 30 2016, 20:38) *
Код
  if (GPIOA_PDIR & ( 1 << (kGpioSW3 & 0xFF) ))
  {
    // Действие если на выводе kGpioSW3 высокий уровень
  }
  else
  {
    // Действие если на выводе kGpioSW3 низкий уровень
  }

не работает почему-то на действие кнопки макрос на LED не выполняется.

Цитата(AlexandrY @ Apr 30 2016, 20:38) *
Рекомендую чтобы не блуждать по директориям KW40Z_Connectivity_Software сделать себе отдельный проект и собрать туда весь набор исходников со своей понятной структурой без всяких внешних зависимостей.

за это спасибо, так действительно проще разобрать всё.

Цитата(AlexandrY @ Apr 30 2016, 20:38) *
А вот с самим снифером на usbkw40z беда. Их софт сносит крышу у Windows 10. Т.е. при попытке создать виртуальный Ethernet интерфейс для снифера у Windows 10 вылазит синий экран.

В общем у меня раньше была похожая проблема с виртуалками, когда я работал с Java, попробуйте приоритет на Виртуальное соединение поставить второстепенный. В общем, у меня тоже вылазил синий экран на 8.1, когда было подключено моё основное соединение и к примеру несколько виртуальных.
AlexandrY
Цитата(mrprim @ May 1 2016, 13:27) *
не работает почему-то на действие кнопки макрос на LED не выполняется.


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


А какой вариант приложения вы используете, bare metal или c использованием FreeRTOS?
А то там ведь надо проверку кнопки вставлять в тело активной задачи. А подходящие активные задачи еще надо найти.

Так у вас снифер все таки работает или нет?
mrprim
Цитата(AlexandrY @ May 1 2016, 11:34) *
А какой вариант приложения вы используете, bare metal или c использованием FreeRTOS?
Так у вас снифер все таки работает или нет?

я юзаю bare metal но сейчас думаю подключу FreeRtos
Usb-kw не тестил пока, так что на счёт снифера пока не отвечу.

Цитата(AlexandrY @ May 1 2016, 11:34) *
А то там ведь надо проверку кнопки вставлять в тело активной задачи. А подходящие активные задачи еще надо найти.


Проверка кнопки у меня стоит в колбеке и проверка сама, как я понял, работает. Просто там постоянно 0, и даже при нажатии ничего не меняется.

Ладно если по кнопке хрен разберешься, то подскажите куда залезть что бы найти команду на Delay. Облазил весь код и нашел максимум osa_timedelay() и то максимальное значение в нём это 23 wacko.gif
выглядит код моргающего леда вот так:
Код
void lptmr_call_back(void) {
      LED1_ON;
      OSA_TimeDelay(23);
      LED1_OFF;
      OSA_TimeDelay(23);
}

Частота вызова функции колбек TMR_PERIOD 500000U
AlexandrY
Цитата(mrprim @ May 2 2016, 11:40) *
я юзаю bare metal но сейчас думаю подключу FreeRtos
Проверка кнопки у меня стоит в колбеке и проверка сама, как я понял, работает. Просто там постоянно 0, и даже при нажатии ничего не меняется.

Ладно если по кнопке хрен разберешься, то подскажите куда залезть что бы найти команду на Delay. Облазил весь код и нашел максимум osa_timedelay() и то максимальное значение в нём это 23 wacko.gif



Чтобы точно знать какие пины как настроены я применяю собственную схему инициализации.
Можно посмотреть вот в этом файле - https://github.com/Indemsys/K66BLEZ1/blob/m...K66BLEZ1_GPIO.c
Функция Config_pin
Это для MK66, но и для MKW40 подойдет в принципе

А в калбэке LP таймера я бы не рисковал делать длиные задержки. Эти таймера могут использоваться Host и Controller стеками BLE. Может быть нарушена их работоспособность.

С LED-ами же во фреймворке есть специальный механизм настройки вызова калбэков по таймеру - TMR_StartIntervalTimer
В файле LED.c от там продемонстрирован в функции LED_StartFlash. И для формирования нужных длительностей сигналов на LED применяется машина состояний со счетчиком состояний, а не задержки.

Если же желание делать на задержках очень велико, то надо создавать отдельную задачу для светодиода с приоритетом поменьше и уж там можно вставлять какие угодно задержки.
Но надо использовать RTOS тогда.
mrprim
Цитата(AlexandrY @ May 2 2016, 10:26) *
Чтобы точно знать какие пины как настроены я применяю собственную схему инициализации.
https://github.com/Indemsys/K66BLEZ1/blob/m...Z1_GPIO.c"]https://github.com/Indemsys/K66BLEZ1/blob/m...K66BLEZ1_GPIO.c[/url]
Функция Config_pin
Это для MK66, но и для MKW40 подойдет в принципе

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

Цитата(AlexandrY @ May 2 2016, 10:26) *
А в калбэке LP таймера я бы не рисковал делать длиные задержки. Эти таймера могут использоваться Host и Controller стеками BLE. Может быть нарушена их работоспособность.


на счёт этого, спасибо. Тут я погорячился что в колбек закидывал основные функции

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

Следующий вопрос такой. Мне пришла BreadBoard и MCP3008 мой камень подключается к ней через SPI шину. а дальше разные игрушки подключаем уже на MCP. Работали с SPI, подскажете что меня спасёт? biggrin.gif
AlexandrY
Цитата(mrprim @ May 4 2016, 19:50) *
Мне пришла BreadBoard и MCP3008 мой камень подключается к ней через SPI шину. а дальше разные игрушки подключаем уже на MCP. Работали с SPI, подскажете что меня спасёт? biggrin.gif


Вот как раз чтобы не связываться с дискретной SPI периферией я и поставил на свой модуль с MKW40 дополнительный микроконтроллер MK66
И теперь могу на этом сделать вот такой PLC с 20-ю 16-и битными аналоговыми входами.
Нажмите для просмотра прикрепленного файла

SPI у Kinetis работает надежно.
В одном из моих проектов MK60 работает по SPI с Wi-Fi чипом на скорости 20 Mbit по DMA.
Единственно при использовании DMA не удалось сделать автоматическое выставление CS. Из-за чего не вышло целые транзакции пакетов организовывать автоматом по DMA.
mrprim
Цитата(AlexandrY @ May 4 2016, 20:49) *
Вот как раз чтобы не связываться с дискретной SPI периферией я и поставил на свой модуль с MKW40 дополнительный микроконтроллер MK66
И теперь могу на этом сделать вот такой PLC с 20-ю 16-и битными аналоговыми входами.

SPI у Kinetis работает надежно.
В одном из моих проектов MK60 работает по SPI с Wi-Fi чипом на скорости 20 Mbit по DMA.
Единственно при использовании DMA не удалось сделать автоматическое выставление CS. Из-за чего не вышло целые транзакции пакетов организовывать автоматом по DMA.

К сожалению у меня нету возможности поставить доп модуль, и мне придется работать в мкс через дискретный spi.
Работали ли вы с ним, и есть ли примеры на kinetis с обработкой информации через spi, для того что бы хоть понять принцип взаимодействия
mrprim
Доброго времени суток еще раз, на данный момент я разобрался с SPI подключением(почти), не всегда работает правильно. Если будет время чуть позже опишу проблему.
Сейчас задача стоит следующая, имею 2 платы kw40z, нужно установить между ними i2c master slave соеденение
и с мастер борда получить доступ к данным акселерометра fxos8700cq
так вот, наигравшись с spi( к примеру для того что бы получить доступ к подключенной плате MCU3008 - я отправлял 3 байта(0x01, "далее байт порта на чипе", 0x00) тем самым просто отправив данные по SPI я получал ответ от нужного нам порта на MCU3008). Так вот i2c работает иначе, я прочитал даташит, нашел там список адресов к примеру who-i-am = 0x0d. У меня возник вопрос, каким образом мне получить ответ от fxos8700cq по i2c
Нужно отправить сам байт с адресом? или Нужно отправить 0xFF занеся адрес 0x0d в адрес конфиг?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.