Перейти к содержанию
    

Ребята, кто-нибудь уже юзал LPC13 серии (у меня 1313)?

Что то у меня он оживать не хочет.

Его пины JTAG совмещены с GPIO и по умолчанию функционируют как JTAG лини, но мой чип в ответ ничего не выдает.

Еще странность, если подтянуть P0.1 на землю во время включения питания или сброса, камень должен остаться в загрузчике, и работать через UART, если соблюсти это условие активности на UART я так же не наблюдаю (он хотяб TX к питанию подтянуть должен).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, по SWD контроллер откликается, остается понять что сделать чтобы он на JTAG переключился ...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, по SWD контроллер откликается, остается понять что сделать чтобы он на JTAG переключился ...

А SWD - это что такое?

 

ЗЫ. LPC13xx это какой кортекс? Вроде слухи были про 17хх и 11хх, а 13хх не слышал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ARM Cortex-M3

SWD - новый дополнительный интерфейс отладки/программирования у кортексов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

FlashMagic отлично работает с этим контроллером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интресно, а для чего тогда пины вывели?

Хороший вопрос :) Спросил об этом наших разработчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да это уже не принципиально, по SWD все-равно приятнее отлаживаться, да и пинов меньше требуется ...

Меня сейчас застал в расплох такой момент, в режиме DEEP SLEEP он может просыпаться ТОЛЬКО (я после ознакомления с докой по диагонали подумал, что от любого прерывания работающего модуля может, в частности таймера :( ) от внешних GPIO, чего спрашивается "пудрить мозги" тем что включен например АЦП в спячке или нет, когда от этого все-равно в системе никакой реакции не будет ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да это уже не принципиально...

 

Ну непринципиально - и хорошо. Просто надо запомнить, что в LPC1300/LPC1100 - только SWD. А наши документописатели уже рисуют новую версию DS и UM без JTAGовских пинов. И зачем они их там нарисовали - ума не приложу :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробую работать с LPC1311.

Вот моя тестовая программака.

#include "LPC13xx.h"  
#include "clkconfig.h"

volatile char i;
void CT16B0_IRQHandler(void)
{
  LPC_TMR16B0->IR = 0x3F; /*clear flag*/
  LPC_TMR16B0->MR0 = i;
  --i;
  return;
}
int main (void)
{
  i = 0;
  /* Enable AHB clock to the GPIO domain. */
  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);

   SystemInit();

  // Init Timer16_B0
  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7);
  LPC_TMR16B0->PR = LPC_TMR16B0->CCR = 0;
  LPC_IOCON->PIO0_8 = 0x02;
  LPC_IOCON->JTAG_TCK_PIO0_10 = 0x03;
  LPC_TMR16B0->MR1 = 0xFF;/*TimerInterval*/
  LPC_TMR16B0->MR0 =1;
  LPC_TMR16B0->MR2 = 0x1F;   //test signal with constant pulse width
  LPC_TMR16B0->MCR=(1<<4)| /*Reset on MR1*/
                                  (1<<3); /*Interrupt MR1*/
/* PWM mode is enabled for CT16B0_MAT0 */
  LPC_TMR16B0->PWMC = 1 + (1<<2);
  NVIC_EnableIRQ(TIMER_16_0_IRQn);
  LPC_TMR16B0->TCR = 1; /* enable Timer */  

  while (1) {}; 
}

 

Здесь настраиваю таймер на выдачу двух ШИМов: один с постоянной скважностью (MR2), другой с изменяемой(MR0).

В обработчике прерывания по переполнению таймера (0xFF) делаю либо инкремент скважности, либо декремент.

Сигнал с выхода MR0 пропускаю через RC-фильтр (R=5.6 кОм, С=2.2 нФ). На выходе RC имею пилу.

Так вот, при инкременте все замечательно.

При декременте на пиле появляется зазубрина.

Откуда она появляется? И почему ширина импулься с выхода MR0 внезапно становится равна нулю при декременте?

Чертовщина какая-то ))).

Писал в службу поддержки NXP и вот что они мне ответили

I did a test with your program on a MCB1000 board with the LPC1343 micro and and did not see any difference. The choice of output might be the problem. Try an other output mode in IOCON register (bit 3 and 4).

 

The jitter and the rise and fall time are the same with increment or decerment i

 

На сайте NXP нет почтового адреса (e-mail) службы поддержки, а только WEB-форма, которая позволяет отправлять только текст.

 

Может shahr посодействует в получении ответа на мой вопрос. Или 3.14 повторит мой эксперимент.

post-16032-1261486288_thumb.jpg post-16032-1261486499_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не трудно, могут ли владельцы плат MCB1300 или LPCXpresso 1343 проверить приложенную прошивку?

Вроде бы сделано все правильно. Файл компановщика сконфигурирован в соответствии с AN10904.

 

Прошивка очень простая, но уже весь мозг сломал - не работает HID. :smile3046:

 

Основная часть кода выглядит следующим образом:

 

#include "includes.h"                        /* LPC13xx definitions */

#define USB_VENDOR_ID 0x1FC9
#define USB_PROD_ID   0x0003
#define USB_DEVICE      0x0100

USB_DEV_INFO DeviceInfo;
HID_DEVICE_INFO HidDevInfo;
ROM ** rom = (ROM **)0x1fff1ff8;

#define     EN_TIMER32_1    (1<<10)
#define     EN_IOCON        (1<<16)
#define     EN_USBREG       (1<<14)

#define PORT0        0
#define PORT1        1
#define PORT2        2
#define PORT3        3

/*
*  Get HID Input Report -> InReport
*/

void GetInReport (uint8_t src[], uint32_t length)
{
    uint8_t PCInReportData = 0;
    
              /*                  */
              src[0] = PCInReportData;
}

/*
*  Set HID Output Report <- OutReport
*/
void SetOutReport (uint8_t dst[], uint32_t length)
{
    uint8_t PCOutReportData = dst[0];
}


int main (void)
{
    volatile int n;
    
    HidDevInfo.idVendor = USB_VENDOR_ID;
    HidDevInfo.idProduct = USB_PROD_ID;
    HidDevInfo.bcdDevice = USB_DEVICE; 
    HidDevInfo.StrDescPtr = (uint32_t)&USB_StringDescriptor[0];
    HidDevInfo.InReportCount = 1;
    HidDevInfo.OutReportCount = 1;
    HidDevInfo.SampleInterval = 0x20;
    HidDevInfo.InReport = GetInReport;
    HidDevInfo.OutReport = SetOutReport;
    
    DeviceInfo.DevType = USB_DEVICE_CLASS_HUMAN_INTERFACE;
    DeviceInfo.DevDetailPtr = (uint32_t)&HidDevInfo;
        
    
    LPC_SYSCON->SYSAHBCLKCTRL |= (EN_TIMER32_1 | EN_IOCON | EN_USBREG);
    
    (*rom)->pUSBD->init_clk_pins();   

    for (n = 0; n < 75; n++) {};
    
    (*rom)->pUSBD->init(&DeviceInfo);
    (*rom)->pUSBD->connect(TRUE);
    
    while(1);
}

void USBIRQ_IRQHandler(void)
{
  (*rom)->pUSBD->isr();
}

post-29246-1283709777_thumb.jpg

Hid.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а кто-нибудь вообще использует HID или MSD на этом процессоре?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...