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

truebest

Участник
  • Постов

    77
  • Зарегистрирован

  • Посещение

Весь контент truebest


  1. Решение типа: LPC_PINCON->PINSEL0 = 0x00000000; LPC_PINCON->PINSEL1 = 0x00000000; LPC_PINCON->PINSEL2 = 0x00000000; LPC_PINCON->PINSEL3 = 0x00000000; LPC_PINCON->PINSEL4 = 0x00000000; LPC_PINCON->PINSEL5 = 0x00000000; LPC_PINCON->PINSEL6 = 0x00000000; LPC_PINCON->PINSEL7 = 0x00000000; LPC_PINCON->PINSEL8 = 0x00000000; LPC_PINCON->PINSEL9 = 0x00000000; LPC_PINCON->PINSEL10 = 0x00000000; /*Выключаем Pull-up*/ LPC_PINCON->PINMODE0 = 0xAAAAAAAA; LPC_PINCON->PINMODE1 = 0xAAAAAAAA; LPC_PINCON->PINMODE2 = 0xAAAAAAAA; LPC_PINCON->PINMODE3 = 0xAAAAAAAA; LPC_PINCON->PINMODE4 = 0xAAAAAAAA; LPC_PINCON->PINMODE5 = 0xAAAAAAAA; LPC_PINCON->PINMODE6 = 0xAAAAAAAA; LPC_PINCON->PINMODE7 = 0xAAAAAAAA; LPC_PINCON->PINMODE8 = 0xAAAAAAAA; LPC_PINCON->PINMODE9 = 0xAAAAAAAA; /*Все GPIO как выходы*/ LPC_GPIO0->FIODIR = 0xFFFFFFFF; LPC_GPIO1->FIODIR = 0xFFFFFFFF; LPC_GPIO2->FIODIR = 0xFFFFFFFF; LPC_GPIO3->FIODIR = 0xFFFFFFFF; LPC_GPIO4->FIODIR = 0xFFFFFFFF; /*Все GPIO в 0*/ LPC_GPIO0->FIOCLR = 0xFFFFFFFF; LPC_GPIO1->FIOCLR = 0xFFFFFFFF; LPC_GPIO2->FIOCLR = 0xFFFFFFFF; LPC_GPIO3->FIOCLR = 0xFFFFFFFF; LPC_GPIO4->FIOCLR = 0xFFFFFFFF; Позволило снизить до 250микроампер. Все равно много. Внутренне отключение всяких блоков в LPC_SC->PCONP не дает никаких результатов.
  2. LPC1768 SLEEP & LPC_PINCON->PINMODE

    Пытаюсь добиться от LPC1768 минимального энергопотребления. В аппноте AN10915 говорят что по умолчанию все ноги контроллера являются входами + подключен внутренний pull-up резистор. Рекомендуют сперва на всех GPIO выключить pull-up резисторы. Ок лезем в юзермануал а там... Там сказано что в карте регистров существует с PINMODE0 - PINMODE7 и PINMODE9. Ок Лезем ниже где расписаны эти регистры, там существует описание только для PINMODE0 - PINMODE4 PINMODE7 PINMODE9. Лезем в хеадер lpc17xx.h там вообще с PINMODE0 по PINMODE9 все есть ренистры. Что точно нужно менять непонятно.. Минимального энергопотребления удалось добиться когда я на всех GPIO включаю только pull-down резисторы в режиме котроллера power down моя плата потребляет 330микроампер(реально из них контроллер потребляет около 150мка что много для этого режима сна). Если я все gpio настраиваю как non-pull-up non-pull-down и отправляю котроллер в power down то моя плата потребляет 1.1ма. Перед сном отключаю все то можно деинициализирую UARTты ADC и прочее. Собственно вопросы, сколько существует реально PINMODE регистров? Что нужно сделать чтобы добиться минимального энергопотребления?
  3. Нужен корпус

    Количество до 1000 в год Корпус ну что-то наподобие вот этого... Корпус Корпус нужен срочно, и что делать я хз...
  4. Про уарт я забыл, перепаял, позже попробую
  5. А по подробнее можете рассказать? Я так понимаю по аналогии его как то чем то тикать заставить. А как вы говорите потом загрузиться с чего либо и переконфигурировать регистр?
  6. LPC1768 и Main oscillator

    Что-то затупил, в кейле убрал галочку Main oscillator enabled, а источник тактирования на внутренний не сменил...Как оживить контроллер... J-tag у меня MT-LINK v8
  7. Все было замечательно...Галла-Ужин девушки баня и тд...
  8. То или сам делай или хер из китая закажешь... А чтобы купил и забыл Вот из этого что посоветуете?
  9. Название темы говорит само за себя... Ценновая категория до 3т.р. Поддержка IDE Keil, IAR одного из обязательна Пока глаз упал на ЭТО Может быть еще что лучше есть ?
  10. C пристрастием осилил документацию на ADF, кишмиш пока в башке не улеглось, щас приступлю к 533, я почитал на русском описание, засяду по подробнее пока как раз он идти будет... йяска 479386
  11. Вообще я как понимаю все равно почти куда что подключать, в частности нанд, как драйвером опишешь так и юзать будешь. тупенький вопрос , ноги нанд ALE CLE вяжутся на ADDR2-3, почему не с первого?
  12. Да ну да, студенту то это влегкую по карману) Я хочу сделать сам плату, думаю что гораздо дешевле выйдет. Выходные мусолил документацию, очень многое стало понятно. мусолю дальше
  13. Ребят подскажите, вот в В этой статье сказано что если я подключаю NAND через EBIU то насколько нибыла бы память использовать я могу только 1мб, Я правильно понял? Получается тогда только через GPIO описывать? Также вопрос, если у меня в SDRAM используется выводы DATA0-DATA15, А у NAND DATA0- DATA7, их я в паралель должен соединить? ну тоесть и сдрам и нанд использует DATA0- DATA7 ноги проца?
  14. Не знал я про пол часа....а есть самодельные программаторы нанд флеш?
  15. Ребят подскажите, если я задействую SPI под Flash(загрузчик) и под ADF7021 , то я смогу ADFку использовать уже непосредственно в linux?
  16. Эт как у народа, чем больше тем лучше, вот и смутило.... Примерно ваша схема у меня в предыдущей конструкции использовалась....только загрузчик шился через Жтаг, прошивка в NAND, и остальное место под ФС... но на той плате был Ethernet, и прошивалось за 3 секунды...и мне она попалась с загрузчиком, я только ее перешивал...Тут у меня только жтаг. А схемкой своего девайса поделиться может кто, для примера... А схемкой своего девайса поделиться может кто, для примера...
  17. А где покупаете не подскажите? А то ближайшее что нашел M25P128-VMF6TP , но она 50мгц
  18. Вобщем я подститал, мне внешним АЦП нужно хватануть 300кгц, соответственно дискретизировать должен с частотой начиная от 600кгц (по найквисту)... Далее в этих 300кгц мне нужно сделать БПФ с разрешением 25-30гц. По формуле N=Fs/(требуемое разрешение) Если я буду дискретизировать с частотой 800кгц и разрешение 25гц то получается минимальное равное 32000 отсчетам, лучше выбрать с избытком 65535 отсчетов.... ну + обработка этих результатов... sevstels посоветуйте модель FLASH памяти для проца, которая будет 4мб или более, нетрудно подключить и возможна загрузка.... Ну это понятно, на Флеш загрузчик линукса, сам линукс и фс, но чтобы начать загрузку Флеш загрузчик нужно сначала про инициализировать саму SPI FLASH, где в процу сказать что мол грузиться надо, тоесть получается, сначала начальную конфигурацию зашить в сам проц....Правильно я все понимаю?
  19. Очень хочется попробовать этот проц, и заставить его работать под линуксом. Задача сделать FSK трансивер, для чего выбрал ADF7021. С ВЧ-СВЧ техникой имею опыт. А вот с ADSP-BF5333 нет. Также есть опыт работы с портативными системами на Linux на процах MIPS арх.(программирование под них, вернее под линукс на них)... также есть несколько других задач которые должен выполнять проц, работу с различными модулями, и в последствие использование высокоскоростного ADC, для создания SDR приемника, и анализа частот в DSP. Из задачи вижу следующую примерную конфигурацию системы Проц ADSP-BF533SBSTZ400 SDRAM MT48LC16M16A2P-75 FLASH S29AL032D70BFI040 Полазив по форуму понял что такую FLASH память будет трудно запрограммировать...Если использовать SPI FLASH, то там возникают проблемы с таким объемом (как у меня нужно минимум 2-3мб)... Подскажите будет ли эта система работать под линуксом? Что нужно обязательно добавить и что нужно для удобства? Подскажите схему JTAG программатора работающего с этим процом? Как мне лучше организовать прощивку S29AL032D70BFI040 ? или есть ли возможность использовать SPI FLASH 4мб и более??? Чтобы запрограммировать S29AL032D70BFI040 , я как понимаю, нужно чтобы проц загрузил с внешнего EEPROM бутлоадер, который будет шить память...Получается еще SPI eeprom надо.
  20. Всем спасибо за советы, проблема была в этой ножке, а также ддс отказывался работать на медленной клоке, не менее 1/4 ему надо чтобы работать...также немного код переписал. void InitDDS(void) { IO_SYNC=OFF; AD9954_RESET(); initSPIM(); IO_SYNC=OFF; // CFR1 (Control Function Register No. 1) LED=ON; //while(1) //{ IO_CS=0; spi_write (DDS_AD9954_CFR1); spi_write (0x00); spi_write (0x00); spi_write (0x32); spi_write (0x0A); // Power down all subsystems. IO_CS=1; ////////////////////// //delay(100); //ddsSetOutputScale (0x3fff); //IO_CS=0; //spi_write (DDS_AD9954_ARR); //spi_write (181); //IO_CS=1; ///CFR2/////////// IO_CS=0; spi_write (DDS_AD9954_CFR2); //spi_write (0x01); spi_write (0x00); spi_write (0x00); spi_write (0xA5); IO_CS=1; IO_UPDATE=1; IO_UPDATE=0; ddsSetFTW(0x00A3D70A); /*while(1) { delay(65530); ddsSetFTW(0x60000000); delay(60000); ddsSetFTW(0x5CCCCCCD); delay(60000); ddsSetFTW(0x5E147AE1); delay(60000); ddsSetFTW(0x5D70A3D7); delay(60000); ddsSetFTW(0x5EB851EC); delay(60000); ddsSetFTW(0x5F5C28F6); delay(60000); }
  21. Щас попробую програмно объединить. Опишите пожалуйста что я должен записать в регистры чтобы получать на выходе ддс несущую на определенной частоте...
  22. !SPI1STATbits.SPIRBF или SPI1STATbits.SPIRBF, зависит от того что у меня будет в регистре контроллера SPI1CON2 там бит SPI1CON2bits.SPIBEN отвечает за буфер, если его делаешь включенным(SPI1CON2bits.SPIBEN = ON;) то while(SPI1STATbits.SPITBF); если как у меня SPI1CON2bits.SPIBEN=0 то проверку надо делать как while(!SPI1STATbits.SPITBF); Да наверное я тут ошибся проверяя Ресив вместо Трансмит буферы. Также игрался с этим битом тоже фиг.... Используемая мной конструкция проверки буфера SPI описанна на примере в книге Программирование на С микроконтроллеров PIC24: Лусио Ди Джасио.... Вот подскажите Нога SYNС_IN должна быть замкнута на землю? в одной их схем только для AD98 она висела в воздухе...Сегодня не успел протестировать, пришлось отпаивать ДДС чтобы срезать подвод массы к этой ноге. Также подскажите обязательно ли должен SPI работать на скорости 1/4 от Fcy или от FOSC?????
  23. Добрый день уважаемые... Довелось мне помучаться с AD9954, Но чтобы я не делал как бы не вертел ее нивкакую она не генерила, я пробовал и аппаратный SPI и програмный ничего. Осцилографом просматриваются идущие данные, клока, cs, резет, i/oupdate. Для проверки заливаю в CFR2 байт 9 чтобы Crystal Out заработал...навыходе естественно получаю фиг... Вообще цель делать бесконечный синус или косинус на 20мгц. Схема ТУТ DDS.C //IOSYNC #define IO_SYNC _RB6 #define TIOSYNC _TRISB6 //IOUPDATE #define IO_UPDATE _RA8 #define TIOUPD _TRISA8 //DDS RESET #define RESET _RB7 #define TRESET _TRISB7 //CS #define IO_CS _RC5 #define TCSEE _TRISC5 //ОSK #define IO_OSK _RA9 #define TOSK _TRISA9 //PS0 PS1 #define IO_PS0 _RA4 #define TPS0 _TRISA4 #define IO_PS1 _RB4 #define TPS1 _TRISB4 #define DDS_AD9954_CFR1 0x00 #define DDS_AD9954_CFR2 0x01 #define DDS_AD9954_ASF 0x02 #define DDS_AD9954_ARR 0x03 #define DDS_AD9954_FTW0 0x04 #define DDS_AD9954_FTW1 0x06 #define DDS_AD9954_NLSCW 0x07 #define DDS_AD9954_PLSCW 0x08 #define DDS_AD9954_RWCW0 0x07 #define DDS_AD9954_RWCW1 0x08 #define DDS_RAM 0x0b #define DDS_FREQ_TO_FTW_DIGITS 9 ////PROTOTYPES void initSPIM(void); void InitDDS(void); void delay(uint i); void AD9954_RESET(void); void spi_write(char data); void ddsSetFTW (unsigned long ftw); void ddsSetOutputScale (unsigned int scale); //---------------------------------------------------------------------- void initSPIM(void) { IO_CS=1; IO_PS1=0; IO_PS0=0; IO_OSK=0; IO_UPDATE=0; SPI1CON1=0x0120; /*13E;*/ SPI1STAT=0x8000; IO_OSK=0; } /// void AD9954_RESET(void) { RESET=0; RESET=1; delay(2200); RESET=0; IO_CS=0; } /// void spi_write(char data) { SPI1BUF=data; while(!SPI1STATbits.SPIRBF); } //// void ddsSetOutputScale (unsigned int scale) { // Set ASF (Amplitude Scale Factor) IO_CS=0; spi_write (DDS_AD9954_ASF); spi_write ((scale >> 8) & 0xff); spi_write (scale & 0xff); IO_CS=1; // Strobe the DDS to set the amplitude. IO_UPDATE=1; IO_UPDATE=0; } /// void ddsSetFTW (unsigned long ftw) { // Set FTW0 (Frequency Tuning Word 0) IO_CS=0;; spi_write (DDS_AD9954_FTW0); spi_write ((ftw >> 24) & 0xff); spi_write ((ftw >> 16) & 0xff); spi_write ((ftw >> 8) & 0xff); spi_write (ftw & 0xff); IO_CS=1; // Strobe the DDS to set the frequency. IO_UPDATE=1; IO_UPDATE=0; } void InitDDS(void) { asm volatile ( "MOV #OSCCON, w1 \n" "MOV #0x46, w2 \n" "MOV #0x57, w3 \n" "MOV.b w2, [w1] \n" "MOV.b w3, [w1] \n" "BCLR OSCCON,#6" RPINR20bits.SDI1R = 5; // Assign SDI1 To Pin RP5 //************************************************************************* // Configure Output Functions (Table 9-2) //************************************************************************* // SPI1 RPOR9bits.RP19R = 7; // Assign SDO1 To Pin RP19 RPOR10bits.RP20R = 8; // Assign SCK1OUT To Pin RP20 //************************************************************************* //Запрещаем изменение настроек переферии пин селект asm volatile ( "MOV #OSCCON, w1 \n" "MOV #0x46, w2 \n" "MOV #0x57, w3 \n" "MOV.b w2, [w1] \n" "MOV.b w3, [w1] \n" "BSET OSCCON, #6" ); AD9954_RESET(); initSPIM(); // CFR1 (Control Function Register No. 1) IO_CS=0; spi_write (DDS_AD9954_CFR1); spi_write (0x00); spi_write (0x00); spi_write (0x00); spi_write (0x02); // Power down all subsystems. IO_CS=1; ////////////////////// ddsSetOutputScale (0x3fff); IO_CS=0; spi_write (DDS_AD9954_ARR); spi_write (181); IO_CS=1; ///CFR2/////////// IO_CS=0; spi_write (DDS_AD9954_CFR2); spi_write (0x00); spi_write (0x02); spi_write (0xA7); IO_CS=1; IO_UPDATE=1; IO_UPDATE=0; ////////////////// while(1) {ddsSetFTW(0x0CCCCCCD); } } //// void delay(uint i) { while(i--); } ////
  24. Добрый день всем...Старая тема но уж также такаяже у меня задача. Неполучается инициализировать AD9954.. После прочитки этого форума понял что надо донышко микры припоять, а также более менее как дергать RESET CS i/o sync и i/o update Мне хотелось чтобы ниже описали правильный алгоритм инициализации, а то размазали по форуму :rolleyes: ) У меня CLKMODESELECT приварен к GND), генератор внешний на 20мгц. Управление реализовываю по 3 проводному SPI. Заранее спасибо.
  25. Пришлите пожалуйста эту программу на [email protected]
×
×
  • Создать...