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

Quasar

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные Quasar


  1. 2Quasar

    const uint32_t test = in;

    убедили. такая константа инитится во время выполнения. Но "const uint32_t test = 5;" инитится известна при компиляции.

     

    Конкретно ваша "const uint32_t test = 5" соптимизируется непонятно во что. Но компилятор действует "в общем". А "в общем", модификатор const - гарант того, что конструкция "a = 5" вне блока инициализации невалидна. Остальное - следствие здравого смысла. Если можно const переменную убрать в rodata (FLASH или ro ОЗУ), её туда уберут, если нельзя - то нет, не уберут.

  2. Локальная const переменная на стадии сборки известна.

     

     

    Тогда подумайте и попробуйте собрать этот код:

     

    #include <inttypes.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    void foo ( uint32_t in ) {
        const uint32_t test = in;
        const uint32_t *pTest = &test;
    
        printf ( "%d, %p\n", test, pTest );
    
    }
    
    int main ( void ) {
        time_t t;
        
        srand((unsigned) time(&t));
    
        foo ( 55 );
        foo ( 77 );
    
        foo ( rand() % 100 );
    
        return 0;
    }

  3. Про применение volatile const для read only регистров переферии уже упоминалось?

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

     

    Я в свое время добавил вопрос о const в список вопросов для соискателей на собеседовании. Удивительно было то, что порой люди с опытом 5 лет и более, ничего кроме "const это константа неизменяемая" сказать не могут. А случай когда регистр периферии volatile const они обычно называют каким-то искусственным и притянутым за уши.

     

     

  4. А почему глобальный конст во флеше, локальный в озу?

     

     

    Локальная const переменная может инициализироваться в момент вызова функции и на стадии сборки неизвестна. Нечего класть во флеш. А вот static const и глобальная const переменная известны уже на стадии сборки.

     

    PS: у меня однажды с одним коллегой драма случилась, он мне долго доказывал, что const ложится всегда исключительно в ro секцию (типа константа ЖЕ) и меняться в процессе исполнения не может (так как либо это флеш, либо область защищенная MMU). Если общение было в тот момент не по переписке, думаю и до мордобития дошло бы дело :smile3009:

  5. Из личного опыта.

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

    Ну и что, что ТС ушел? Тема, в принципе, актуальная.

     

    Я попробовал сделать передатчик на RDA1846S, которая упоминалась в этой теме. Передавать нужно было не только голос (300-3300 Гц), но и 4FSK, то есть, нужна была полоса от 0 Гц. Как отключить звуковой highpass фильтр на входе микрофона этой микрухи, я так и не понял. Поэтому, подал модулирующий сигнал на опорный VTCXO. На 430 МГц оно работало нормально (я правда не оценивал, что со спектром при таком способе модуляции), а вот на 170 МГц уже не получается. Доступны для экспериментов только генераторы с перестройкой не более 15 ppm, а этого маловато для формирования сигнала с девиацией около и более 5 кГц. Вот изучаю варианты более гибкого решения.

     

    И еще вопрос, а что за тип синтезатора в RDA1846S? Если у классического синтезатора начать модулировать опорный генератор, то АЧМХ будет обратно пропорциональна АЧХ петлевого фильтра (то есть, будут срезаться ВЧ составляющие), у этой же RDA АЧХ вполне ровная вплоть до 4 кГц, в случае модуляции её опорного генератора.

     

    post-23021-1508536897_thumb.png

     

  6. Я пока не вникал - просто сейчас нет времени, если нет такого ограничения, как в приведенной цитате, то совсем хорошо.

     

     

    Сейчас изучаю решения, для передачи FM модулированного сигнала (голоса и цифровых 4FSK данных), не удалось ли опробовать эту МС на практике? Вроде, получается Arbitrary Level Direct Digital FSK Modulation вполне подходит для голоса. Я верно понимаю, что если загонять в LMX2571 данные со скоростью 8000 с/сек, то она вполне нормально такое переварит?

     

  7. Ищу монтажника (или группу монтажников) для сборки ПП образцов и прототипов, со своей территорией для сборки и монтажным оборудованием.

    Речь идет о несложных платах в количестве до 20 штук, с компонентами 0603, LQFP и TQFP, (никаких BGA не требуется).

    Территориально г. Москва, желательно несильно далеко от метро Полежаевская.

     

    Связь либо ЛС, либо почта job.andrei © gmail.com

     

     

  8. На вашем устройстве возможно запустить usbmon и tcpdump?

     

    Проблема все-таки была в железке на STM32. Конечная точка почему-то сваливалась в состояние NAK (NAK: the endpoint is naked and all reception requests result in a NAK handshake.) Немного переработал свой код, работающий с USB стеком STM'а, и зависоны исчезли.

     

     

  9. А, понятно: у вас вместо линукса какая-нибудь бубунта. И идиотский systemd запускает modemd при обнаружении /dev/ttyACM1. В результате устройство блокируется, и работать с ним невозможно.

    Ну что, поздравляю... Проблему можно решить черезжопно, оставив бубунту вместо линукса, либо по-человечески, установив дистрибутив, в котором нет systemd.

     

    У меня ядро скачано с kernel.org и собрано собственаручно, с правкой board файла. А rootfs собран buildroot'ом.

     

    Я что-то не понял, а вы как определили что с устройством невозможно работать?

  10. Вы лучше вместо этой ереси показали бы, что в dmesg после подключения устройства, и что выдает udevadm monitor.

    Наверняка endpoint криво сконфигурирован, но дырявые мастдайские дрова на это плюют, а в линухе требуется точное соответствие.

     

    dmesg
    ....
    b 1-2: new full-speed USB device number 3 using at91_ohci
    cdc_acm 1-2:1.0: This device cannot do calls on its own. It is not a modem.
    cdc_acm 1-2:1.0: ttyACM1: USB ACM device

     

     

    lsusb -v          
    
    Bus 001 Device 003: ID 0483:5740 STMicroelectronics STM32F407
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x0483 STMicroelectronics
      idProduct          0x5740 STM32F407
      bcdDevice            2.00
      iManufacturer           1 
      iProduct                2 
      iSerial                 3 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           67
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass      2 Abstract (modem)
          bInterfaceProtocol      1 AT-commands (v.25ter)
          iInterface              0 
          CDC Header:
            bcdCDC               1.10
          CDC Call Management:
            bmCapabilities       0x00
            bDataInterface          1
          CDC ACM:
            bmCapabilities       0x02
              line coding and serial state
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval              16
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0 
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
    
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass            9 Hub
      bDeviceSubClass         0 Unused
      bDeviceProtocol         0 Full speed (or root) hub
      bMaxPacketSize0        64
      idVendor           0x1d6b Linux Foundation
      idProduct          0x0001 1.1 root hub
      bcdDevice            3.18
      iManufacturer           3 
      iProduct                2 
      iSerial                 1 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           25
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower                0mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         9 Hub
          bInterfaceSubClass      0 Unused
          bInterfaceProtocol      0 Full speed (or root) hub
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0002  1x 2 bytes
            bInterval             255

  11. Про работу стека в STM32F103 - если у Вас нет данных для передачи в хост, выполняете ли посылку нулевой длины? На некоторых версиях windows нарушение не проходит даром. Возможно и тут аналогично.

    Объяснение "на мой глаз" такое - неответивший несколько раз ендпоинт переводится хостом в список "заблокированных" и его перестают спрашивать.

     

     

    Не понял про windows? С Windows на обычном PC, железка на STM32 нормально общается, без зависонов. Проблема в общении с хостом на ATSAM9G45. Посылок нулевой длины я не шлю, и вроде как никакого обмена на шине нет (если верить USBMon'у) в покое. Зависает строго под нагрузкой, то есть когда появляется активный двухсторонний обмен. И то не всегда, иногда все исправно работает в течение продолжительного времени.

  12. Столкнулся с проблемой, которую не удается победить.

     

    Есть железка на STM32F103 на которой я запустил USB с CDC классом. Железка должна прикидываться COM портом и гонять данные, со скорость порядка 140 кбит/с. Судя по работе с Виндоус, она с этим справляется нормально. А вот с линуксом на ATSAM9G45 работает как-то не очень, обмен периодически зависает :-(

     

    Ядро используется 3.18.48. Проанализировав работу cdc-acm.c в момент зависания, обнаружил, что заканчиваются urb на передачу, и функция int acm_tty_write вываливается с ошибкой, так как ей acm_wb_alloc возвращает -1. То есть, в один прекрасный момент, перестает вызываться USB стеком функция acm_write_bulk, освобождлающая эти urb.

     

    Собственно, может кто подскажет, куда дальше нужно рыть?

     

    Привожу лог USBmon'а:

     

    c3a23500 261404154 C Bi:1:002:1 0 38 = 59aae335 5050c80f 132609b1 480480ac e19fc1ad 43401095 24ca361d 07f04700
    c3a23500 261404192 S Bi:1:002:1 -115 128 <
    c3a23400 261459717 S Bo:1:002:1 -115 64 = 84a96143 c4006cff 34fea4fb 4cff6401 a4f854fe ac0224fa 24fc2c02 24fc64fb
    c3a23380 261459776 S Bo:1:002:1 -115 64 = 4800e4fa f4fc3401 340164f9 bcfe9c05 0cff64fc 7000dc03 d4fcecfe 54fea4fa
    c3a23300 261459800 S Bo:1:002:1 -115 64 = 240164f9 58008cfe e4fa1c04 54fec4f5 5c04b400 c4f574fe 6c0344f8 8cfe6c03
    c3a23280 261459821 S Bo:1:002:1 -115 64 = e4f99cfe 5cff24fc 1000ecfe 4c034c02 24fa4c03 a8ffa4fb 24fc64fc 4401b4fc
    c3a23200 261459843 S Bo:1:002:1 -115 64 = dc05d4fd e4f91c04 1c06a4f8 14fd0c03 e4fb44f8 44f74c03 94fce4fa ecfed4fc
    c3a23180 261459862 S Bo:1:002:1 -115 64 = 54fee4fa 74fdac01 8c021c04 4c020401 9c052c02 d4fcd4fd a400acfe d4fdac01
    c3a23100 261459882 S Bo:1:002:1 -115 64 = c4f244f8 04e904e1 44f244f8 e4f9acfe 1c07bc08 bc073c0f 3c0c3c0f 3c0d5c07
    c3a23080 261459901 S Bo:1:002:1 -115 64 = 44f7c4f6 c4f6c4f3 44f444f5 04eb04ec c4f404e5 04e544f1 c4f124fb 3c08bc0e
    c3a23000 261459921 S Bo:1:002:1 -115 64 = 04ee04ec 04eb04ed 04eb04ef 64fca4fb 94fc1c05 5c066c02 bc0adc03 f8ffbc08
    c39bff80 261459941 S Bo:1:002:1 -115 64 = 3c0dbc0d 3c0b1c07 3c0d3c0f 3c0abc0e bc0a3c09 3c0bdc04 1c063c09 1c06ec01
    c39bff00 261459961 S Bo:1:002:1 -115 64 = 34013c0c fc103c0b bc083c08 bc093c0a fc143c0c 5000d8ff a4f92cff cc0114fe
    c39bfe80 261459982 S Bo:1:002:1 -115 64 = 34fe64fc 3800bc08 bc07fc11 bc0b6c03 3c0a5c07 1c0464fc e4fa88ff 6cffc4f6
    c39bfe00 261460003 S Bo:1:002:1 -115 64 = 14fd94fd 24f9b4fd 24fcc4f6 e4fb24f9 a4fa24fb 24fbf4fc f8ffb400 24fc64fb
    c39bfd80 261460023 S Bo:1:002:1 -115 64 = 5c063c0c bc0c5c05 ac0174fe a0ff3401 44011cff 14fe44f8 c4f5bcfe dc041c06
    c39bfd00 261460043 S Bo:1:002:1 -115 64 = 64fc64fc d4fcd4fc e4fae4fb 94fc24fb a4fbe4fa e4fa24fb 64fae4f9 24fa24fa
    c39bfc80 261460064 S Bo:1:002:1 -115 64 = acfeccfe bcfe2cff 0cffdcfe 0cffacfe 34fe34fe f4fdb4fd d4fdb4fd 94fdd4fd
    c39bfc00 261460084 S Bo:1:002:1 -115 64 = ccfefcfe 1cffccfe fcfefcfe dcfedcfe 1cffbcfe acfe5cff 54febcfe 7cff14fe
    c39bfb80 261460104 S Bo:1:002:1 -115 64 = dcfe34fe dcfebcfe 54febcfe 9cfe74fe 9cfe9cfe 8cfeacfe acfeacfe 9cfebcfe
    c39bfb00 261460124 S Bo:1:002:1 -115 64 = bcfebcfe 9cfebcfe bcfe9cfe bcfebcfe 9cfebcfe ccfe9cfe ccfebcfe 8cfebcfe
    c3a23400 261460157 C Bo:1:002:1 0 64 >
    c3a23380 261460179 C Bo:1:002:1 0 64 >
    c3a23300 261460186 C Bo:1:002:1 0 64 >
    c3a23280 261460192 C Bo:1:002:1 0 64 >
    c3a23400 261460220 S Bo:1:002:1 -115 64 = 8cfe54fe 7cff74fe 74fe2cff 8cfe54fe ecfeacfe 34fefcfe bcfe74fe 1cffacfe
    c3a23380 261460244 S Bo:1:002:1 -115 4 = 8cfe9cfe
    c3a23200 261461173 C Bo:1:002:1 0 64 >
    c3a23180 261461188 C Bo:1:002:1 0 64 >
    c3a23100 261461195 C Bo:1:002:1 0 64 >
    c3a23080 261461201 C Bo:1:002:1 0 64 >
    c3a23000 261461208 C Bo:1:002:1 0 64 >
    c39bff80 261461214 C Bo:1:002:1 0 64 >
    c39bff00 261461221 C Bo:1:002:1 0 64 >
    c39bfe80 261461228 C Bo:1:002:1 0 64 >
    c39bfe00 261461235 C Bo:1:002:1 0 64 >
    c39bfd80 261461242 C Bo:1:002:1 0 64 >
    c39bfd00 261461249 C Bo:1:002:1 0 64 >
    c39bfc80 261461256 C Bo:1:002:1 0 64 >
    c39bfc00 261461263 C Bo:1:002:1 0 64 >
    c39bfb80 261462147 C Bo:1:002:1 0 64 >
    c39bfb00 261462155 C Bo:1:002:1 0 64 >
    c3a23400 261462161 C Bo:1:002:1 0 64 >
    c3a23380 261462168 C Bo:1:002:1 0 4 >
    c3a23480 261483153 C Bi:1:002:1 0 38 = 27d58b80 a6346866 47a19e42 94224988 31a76883 c399324e 8d4d50af d262ba06
    c3a23480 261483192 S Bi:1:002:1 -115 128 <
    c3a23400 261535926 S Bo:1:002:1 -115 64 = 84a96143 9cfe74fe 8cfe8cfe 8cfe8cfe 9cfe9cfe acfeacfe 8cfeacfe acfe8cfe
    c3a23380 261535984 S Bo:1:002:1 -115 64 = 74fe74fe 8cfe9cfe acfe74fe ccfeacfe 34fe1cff 54fef4fd 6cfff4fd 14fea0ff
    c3a23300 261536008 S Bo:1:002:1 -115 64 = ccfefcfe 54fe8cfe 74fe54fe 54fe8cfe acfe74fe dcfeccfe 9cfefcfe 74fe8cfe
    c3a23280 261536029 S Bo:1:002:1 -115 64 = 74febcfe bcfe74fe 54fefcfe ccfe74fe acfe8cfe ecfe74fe 8cfeecfe 74fe9cfe
    c3a23200 261536049 S Bo:1:002:1 -115 64 = 34fd14fe e8ff74fd bcfe0cff 9cfe0cff 5cff1cff 34fea0ff 74fe14fe 1cff14fe
    c3a23180 261536068 S Bo:1:002:1 -115 64 = 8cfe14fe f4fd54fe 54fe54fe dcfe2cff 8cfe2cff 1cff94fd 54febcfe 94fdacfe
    c3a23100 261536088 S Bo:1:002:1 -115 64 = 9cfe2800 fcfeacfe ecfeb4fd 54fe54fd 54fd74fe b4fdf4fd b4fcd4fc 3cff4cff
    c3a23080 261536107 S Bo:1:002:1 -115 64 = 0cffdcfe b4fc54fe 74fdacfe 74fef4fd 74fe34fe 04017cff 6cff2cff acfec0ff
    c3a23000 261536128 S Bo:1:002:1 -115 64 = b0ff94fd 5cff64fc c4f754fd bcfe24fb 94006401 f4fd2c02 7cff24fb 34fd24fa
    c3a23400 261536163 C Bo:1:002:1 0 64 >
    c3a23380 261536183 C Bo:1:002:1 0 64 >
    c3a23400 261536213 S Bo:1:002:1 -115 64 = 64fc24fa 44f7c4f7 44f8c4f5 c4f764f9 c4f644f4 44f204ed 04e8c4f5 9c03bc0c
    c3a23380 261536238 S Bo:1:002:1 -115 64 = 94fcacfe 8c025c05 bc089c05 64fbc4f2 04ec04e9 44f7bc0e fc1bfc1b fc129c06
    c39bff80 261536258 S Bo:1:002:1 -115 64 = d4fd1000 a4fb44f8 34fda4fb 64fcf400 a4fba4f9 e4f9e4f8 a4fbb4fc 44f504ee
    c39bff00 261536278 S Bo:1:002:1 -115 64 = bcfe9400 54fed4fd 64fb5cff bc083c0a 080004ef 04e604e4 04eb04ef 04e9c4f7
    c39bfe80 261536298 S Bo:1:002:1 -115 64 = fc1afc15 fc1bfc11 4c02c4f4 c4f1c4f5 44f2c4f3 44f724f9 44f8a4f8 94fc5cff
    c39bfe00 261536319 S Bo:1:002:1 -115 64 = a4fa64fc 00000c02 c0ff9c03 fc119c06 f4003c0a bc09dc06 ac028c02 ec02dc06
    c39bfd80 261536339 S Bo:1:002:1 -115 64 = 04ec04ed 04ec04ee 24f9c400 dc03dc04 9c06fc0f fc103c0b 3c093c0b bc0a1c04
    c39bfd00 261536360 S Bo:1:002:1 -115 64 = fc0fbc0c 3c0bbc0b bc091c07 fcfe74fe 04e904f0 2c0304e4 04ecd4fd a4fba4fb
    c39bfc80 261536381 S Bo:1:002:1 -115 64 = 14fd94fc 2c02bc08 3c0a3c08 64fb04ef 44f8a4f9 04e484df 04ef04ef 04ea04ec
    c39bfc00 261536400 S Bo:1:002:1 -115 64 = 04ef04ef 44f444f4 c4f2c4f5 14fdac01 7401ec02 bc083c0c 3c0abc07 3c083c09
    c39bfb80 261536420 S Bo:1:002:1 -115 64 = 3c0d3c0d 1c068c02 3c0cbc08 b4fdd4fd 0c03ac02 a4fae4fa 30002c02 b40054fd
    c39bfb00 261536440 S Bo:1:002:1 -115 4 = 5cff0000
    c3a23300 261537171 C Bo:1:002:1 0 64 >
    c3a23280 261537186 C Bo:1:002:1 0 64 >
    c3a23200 261537194 C Bo:1:002:1 0 64 >
    c3a23180 261537200 C Bo:1:002:1 0 64 >
    c3a23100 261537207 C Bo:1:002:1 0 64 >
    c3a23080 261537214 C Bo:1:002:1 0 64 >
    c3a23000 261537221 C Bo:1:002:1 0 64 >
    c3a23400 261537228 C Bo:1:002:1 0 64 >
    c3a23380 261537235 C Bo:1:002:1 0 64 >
    c39bff80 261537242 C Bo:1:002:1 0 64 >
    c39bff00 261537249 C Bo:1:002:1 0 64 >
    c39bfe80 261537256 C Bo:1:002:1 0 64 >
    c39bfe00 261538150 C Bo:1:002:1 0 64 >
    c39bfd80 261538159 C Bo:1:002:1 0 64 >
    c39bfd00 261538165 C Bo:1:002:1 0 64 >
    c39bfc80 261538172 C Bo:1:002:1 0 64 >
    c39bfc00 261538178 C Bo:1:002:1 0 64 >
    c39bfb80 261538185 C Bo:1:002:1 0 64 >
    c39bfb00 261538192 C Bo:1:002:1 0 4 >
    c3a23c00 261562166 C Bi:1:002:1 0 38 = 5a291b9b 2286e0e6 b4113070 d2320764 a17b1187 28261609 a54ea86e 56f14f26
    c3a23c00 261562205 S Bi:1:002:1 -115 128 <
    c3a23400 261635892 S Bo:1:002:1 -115 64 = 84a96143 1c05fc0f fc11bc0b bc0cfc11 bc0e1c06 cc018c01 8cfe44f8 c4f2c4f3
    c3a23380 261635951 S Bo:1:002:1 -115 64 = 40003000 64fa24fa 04f0c4f1 f0ff04ed c4f09cfe e4fb64fb 74fddc05 1c061c05
    c3a23300 261635976 S Bo:1:002:1 -115 64 = ec011c05 5c073c08 9c0344f4 c4f34c03 44f204e2 44f2c4f6 04ef04ed c4f3b4fd
    c3a23280 261635998 S Bo:1:002:1 -115 64 = 24fac4f7 c4f4c4f6 64fa64fb e4fa94fc 44014c03 cc014c02 5c045c04 4c021000
    c3a23200 261636019 S Bo:1:002:1 -115 64 = 5cfff4fc 3cff5800 14fe7000 c40034fe e0ffe400 8cfeacfe f0ff74fe ecfea8ff
    c3a23180 261636040 S Bo:1:002:1 -115 64 = 34fe74fd 34fe34fe d4fd54fd 94fd74fd 54fd94fd 54fd94fd f4fd74fe 74fe9cfe
    c3a23100 261636059 S Bo:1:002:1 -115 64 = 8cfefcfe 34fd14fe 2cffb4fc 14fea0ff f4fc54fe d0ff14fd 34fe98ff d4fcf4fd
    c3a23080 261636079 S Bo:1:002:1 -115 64 = 54fedcfe 3cff74fe 0cff3cff 74fe9cfe ccfe34fe 54fe8cfe 54fe74fe 9cfe74fe
    c3a23000 261636100 S Bo:1:002:1 -115 64 = dcfe74fe 8cfeacfe 54fe8cfe acfe54fe 54fe8cfe 74fe8cfe acfe74fe acfeecfe
    c39bff80 261636119 S Bo:1:002:1 -115 64 = 4cffdcfe 34fd3cff 0cff34fe 14fe54fe 44f7a4fa 5c0594fc 54fe9c04 b0fffcfe
    c3a23400 261636156 C Bo:1:002:1 0 64 >
    c3a23380 261636176 C Bo:1:002:1 0 64 >
    c3a23400 261636203 S Bo:1:002:1 -115 64 = f4fd14fe 44f854fd 300024fa d4000c03 f8ff6800 50008cfe ec018cfe a4fb2800
    c3a23380 261636230 S Bo:1:002:1 -115 64 = f400ccfe b4fd4800 d4fd34fd c400d4fc 94fc0401 b4fde4fb 9400dcfe 64fc3800
    c39bff00 261636251 S Bo:1:002:1 -115 64 = 64fca4fb 24fce4fa e4fa64fb 64fa24fa 24faa4f9 e4f8a4f8 44f8c4f7 44f744f8
    c39bfe80 261636273 S Bo:1:002:1 -115 64 = bc073c09 bc08bc08 dc06bc07 1c071c06 dc058c02 b8ff14fd 44f6c4f2 c4f2c4f5
    c39bfe00 261636294 S Bo:1:002:1 -115 64 = a4faec01 3c08bc07 5c059c04 9c03f400 f4fd24fb a4f9a4f8 c4f7c4f7 44f744f7
    c39bfd80 261636315 S Bo:1:002:1 -115 64 = fc11fc18 fc19fc13 bc0b3c0d 3c0d1c05 6cff0cff 0c02ccfe a4fb4401 cc02f400
    c39bfd00 261636335 S Bo:1:002:1 -115 64 = 7cffec02 3c0a3c08 0c026c03 dc066c03 64fce4fb 8cfe24fb c4f5c4f7 a4f944f7
    c39bfc80 261636355 S Bo:1:002:1 -115 64 = 0cff4800 c0ffe0ff 44f544f4 bc07c4f5 04eeac01 ac02a4f9 c4f6dc06 bc0724fa
    c39bfc00 261636375 S Bo:1:002:1 -115 64 = 4c028c02 64fa04f0 ccfee4fb 04e904ee 44f844f7 04ed04ef 8cfee4fb c4f7f4fc
    c39bfb80 261636395 S Bo:1:002:1 -115 64 = c4f7c4f7 e4fba4fb 64fa74fe 74fe0000 8c01d4fd f0ff8400 d4fd3000 e400e8ff
    c39bfb00 261636414 S Bo:1:002:1 -115 4 = dc03cc01
    c3a23300 261637170 C Bo:1:002:1 0 64 >
    c3a23280 261637205 C Bo:1:002:1 0 64 >
    c3a23200 261637213 C Bo:1:002:1 0 64 >
    c3a23180 261637220 C Bo:1:002:1 0 64 >
    c3a23100 261637227 C Bo:1:002:1 0 64 >
    c3a23080 261637233 C Bo:1:002:1 0 64 >
    c3a23000 261637240 C Bo:1:002:1 0 64 >
    c39bff80 261637247 C Bo:1:002:1 0 64 >
    c3a23400 261637254 C Bo:1:002:1 0 64 >
    c3a23380 261637261 C Bo:1:002:1 0 64 >
    c39bff00 261637267 C Bo:1:002:1 0 64 >
    c39bfe80 261637274 C Bo:1:002:1 0 64 >
    c39bfe00 261638160 C Bo:1:002:1 0 64 >
    c39bfd80 261638193 C Bo:1:002:1 0 64 >
    c39bfd00 261638201 C Bo:1:002:1 0 64 >
    c39bfc80 261638209 C Bo:1:002:1 0 64 >
    c39bfc00 261638216 C Bo:1:002:1 0 64 >
    c39bfb80 261638223 C Bo:1:002:1 0 64 >
    c39bfb00 261638230 C Bo:1:002:1 0 4 >
    c3a23b80 261641157 C Bi:1:002:1 0 38 = 8c74084b 260be7aa 7d6fa5ab 2d02451b cc123f8d b4093690 fa2fe07b 3b7e6136
    c3a23b80 261641181 S Bi:1:002:1 -115 128 <
    c3a23400 261719827 S Bo:1:002:1 -115 64 = 84a96143 94fc04ec 04eaa4fa cc0244f7 44f5e4f9 a4fabcfe d4fdfcfe ecfeac02
    c3a23380 261719895 S Bo:1:002:1 -115 64 = 24fce4fa 24fae4f9 a4f9a4f9 64faa4fa e4fa64fb 64fba4fb 64fce4fb 64fc34fd
    c3a23300 261719920 S Bo:1:002:1 -115 64 = 54fe1800 e4fb54fe 1cff64fc 14fe7cff d4fc14fe 0800d4fc ccfee8ff f4fc7cff
    c3a23280 261719942 S Bo:1:002:1 -115 64 = 54feecfe 9cfe54fe bcfe74fe 74fe74fe 74fe54fe 54fe8cfe 54fe9cfe ccfe74fe
    c3a23200 261719963 S Bo:1:002:1 -115 64 = 9cfe74fe 74fe74fe 34feacfe 74fe34fe dcfe9cfe 74fe74fe 1cff54fe d4fd4000
    c3a23180 261719982 S Bo:1:002:1 -115 64 = 3cffe8ff 94fc2800 fcfef4fc 6800f4fd d4fda8ff f4fd74fe dcfe9cfe 74febcfe
    c3a23100 261720002 S Bo:1:002:1 -115 64 = 54fedcfe bcfe34fe 0cff9cfe 54fe0cff 74fe74fe dcfe74fe acfedcfe acfedcfe
    c3a23080 261720022 S Bo:1:002:1 -115 64 = bcfe34fe acfe3cff 74fdccfe c0ff24fc e0ff88ff e4fb4401 74feb4fc 640194fd
    c3a23000 261720041 S Bo:1:002:1 -115 64 = 90ff94fd fcfe0cff 34fe9cfe 0cff74fe 34fe3cff 34fe34fe 4cfff4fd 74fe3cff
    c39bff80 261720061 S Bo:1:002:1 -115 64 = dcfeacfe 8cfebcfe acfebcfe bcfeacfe bcfeccfe acfe9cfe bcfeacfe acfe9cfe
    c39bff00 261720081 S Bo:1:002:1 -115 64 = 9cfed4fc 9400f4fd 74fd9400 74fd14fe 080094fd 34feb0ff d4fdf4fd f8fff4fd
    c39bfe80 261720101 S Bo:1:002:1 -115 64 = 1cfff4fd 9cfe2cff d4fdccfe 0cff14fe fcfeecfe 34fedcfe dcfe54fe ccfedcfe
    c39bfe00 261720121 S Bo:1:002:1 -115 64 = 54fedcfe 74fe8cfe bcfe9cfe 74feecfe acfe34fe 4cff54fe 54fe88ff 14fe8cfe
    c3a23b00 261720159 C Bi:1:002:1 0 38 = 824a8c0d 0212bcfb 64e0b4b4 d1367908 9dd2529f ab3f1689 0a841987 42d81f16
    c3a23b00 261720184 S Bi:1:002:1 -115 128 <
    c3a23400 261720200 C Bo:1:002:1 0 64 >
    c3a23400 261720233 S Bo:1:002:1 -115 64 = 34fe34fe 0cff74fe 14fe2cff 9cfef4fd 6cff74fe 14fe7cff f4fd54fe 4cfff4fd
    c39bfd80 261720258 S Bo:1:002:1 -115 64 = 54feccfe acfe34fe ecfe54fe 74febcfe 8cfe54fe bcfeccfe 14fefcfe 8cfe14fe
    c39bfd00 261720279 S Bo:1:002:1 -115 64 = 74feccfe 74febcfe ecfe34fe 2cff9cfe 54fe4cff 54fe74fe 0cff54fe 54feecfe
    c39bfc80 261720301 S Bo:1:002:1 -115 64 = 14fe0cff dcfef4fd 2cffacfe 14fe1cff 9cfe34fe 0cff74fe 14fe2cff 54fe34fe
    c39bfc00 261720321 S Bo:1:002:1 -115 64 = 8cfeccfe 8cfe9cfe dcfe54fe acfeccfe 34fedcfe acfe34fe ecfe9cfe 54fedcfe
    c39bfb80 261720341 S Bo:1:002:1 -115 64 = b8ff74fd 74fd74fd 14fdb4fd f4fc64fc 24fba4fa a4f904ee 04ecc4f6 44f8c4f6
    c39bfb00 261720361 S Bo:1:002:1 -115 64 = a4003c0e 3c0f7c20 7c247c24 fc196c03 bc0b6cff 04ecc4f5 5c063c0b 9c058c01
    c39bfa80 261720381 S Bo:1:002:1 -115 4 = f4fcc4f6
    c39bfa00 261789706 S Bo:1:002:1 -115 64 = 84a96143 f4fcdc04 bc085c05 bc09bc0e 3c0cbc09 ac02cc01 dc034cff a4fa44f6
    c39bf980 261789765 S Bo:1:002:1 -115 64 = 44f88c02 3c09bc0e bc0ebc0a bc08bc08 9c05ccfe 14fd2cff e4fb44f6 44f3c4f3
    c39bf900 261789792 S Bo:1:002:1 -115 64 = b8ff7800 c4f7f8ff 1c04ac01 3c09ec02 a8ff5c06 3c09dc03 94fc5c04 dc066cff
    c39bf880 261789814 S Bo:1:002:1 -115 64 = 24f9c4f5 b4fc5c07 3c0efc14 fc10bc0b fc11fc12 3c0994fc 24fbf4fc 44f604f0
    c39bf800 261789835 S Bo:1:002:1 -115 64 = a4f9c4f5 44f3c4f4 c4f7a4f8 24f924fc 04ede4fa bc0e24fa e4f83c09 bc0edc04
    c39bf780 261789856 S Bo:1:002:1 -115 64 = 3c0b4401 cc023c0a 3c0e3c0a 44f604e4 04e2c4f1 04e984d1 84dfc4f4 64f9c4f5
    c39bf700 261789877 S Bo:1:002:1 -115 64 = a4f844f8 64fa8c02 bc0a3c0b bc083c0a bc0c3c0a 1c0434fe e4fb24fb 44f744f2
    c39bf680 261789898 S Bo:1:002:1 -115 64 = 8c0224fb a4fa8400 5401dc05 240134fe 5c06bc07 2c03f8ff 1c05bc07 ec02cc01
    c39bf600 261789918 S Bo:1:002:1 -115 64 = 44f544f5 44f80c03 bc0efc10 3c0f3c0e fc11fc12 bc084cff b4fc24fc 44f604ef
    c39bf580 261789939 S Bo:1:002:1 -115 64 = 24f9c4f4 44f4c4f5 44f7c4f7 64f974fd ec016c02 1c045c05 1c06dc05 44f224fb
    c39bf500 261789960 S Bo:1:002:1 -115 64 = ec015c04 9c037cff c8ffdc04 cc028c01 2401ac02 3c0a3c09 bc070401 04f004ea
    c39bf480 261789981 S Bo:1:002:1 -115 64 = 98ff74fd 24fb44f5 c4f004ef 44f3c4f6 c4f5e4f8 60001c05 9c061c07 bc083c0b
    c3a23a80 261800155 C Bi:1:002:1 0 38 = e0bc4133 f2d39312 50748d49 16ebae13 79b875b4 ab724a01 38f9b64c ca6c07a8
    c3a23a80 261800194 S Bi:1:002:1 -115 128 <
    
    [ВСЕ, ЗДЕСЬ ВСЕ ЗАКАНЧИВАЕТСЯ]

     

  13. Да, а по поводу считывания из FreeRTOS ее версии?

     

    В task.h

     

    #define tskKERNEL_VERSION_NUMBER "V8.2.3"
    #define tskKERNEL_VERSION_MAJOR 8
    #define tskKERNEL_VERSION_MINOR 2
    #define tskKERNEL_VERSION_BUILD 3

     

    У многих тулчейнов есть возможность автоматического ведения номера билда - инкрементация при запуске. Я не нашел такого у IARа. Неужели нет?

     

    Я не нашел такой функции в кеил в свое время, не удивлюсь если и в IAR её нет.

     

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

     

     

  14. Так может затактировать WM8731 от процессора, "забив" на наличие кварца у DAC'а?

     

     

    Для этого, надо заводить мастер клок на WM от процессора (то есть плату переделывать). I2SPLL в STM32 умеет генерить его и выводить на ножку, но он строго Fs x 256. Для WM в режиме 8 кГц, это скорее всего окажется маловато. Только если вести работу в режиме 48 кГц. Тогда получается мастерклок нормальный - 12.288. Но в 48 кГц и в STM32 слейве нормально работается.

     

    Вообще, у WM8731 есть режим DSP-mode, он очень похож на TI_MODE в STM32. Ножки даже те же используются, но информационные ноги меняют направление для режима TI_MODE slave в STM32, то есть опять плату переразводить.

     

    Я в принципе нашел решение, в жертву пришлось принести ОЗУ (в три раза больше нужно) и в два раза чаще при таком решении вызывается DMA обработчик. Но связка работает в режим 8 кГц, WM master - STM32 slave.

  15. Я не пробовал генерить кодеком... а с чего бы ему не выдать 8 кГц и 256 кГц?... Вы такое же программирование использовали?

     

    Ну вот чего в pdf'е на WN пишут:

     

    In Master mode, DACLRC and ADCLRC will be output with a 50:50 mark-space ratio with BCLK

    output at 64 x base frequency (i.e. 48 kHz)

     

    А base frequency определяется MCLK и BOSR битом. А в TLV320 я уже цитировал:

     

    In normal mode, BCLK = MCLK/4 for all sample rates except for 88.2 kHz and 96 kHz. For 88.2 kHz and 96 kHz sample rate,

    BCLK = MCLK.

     

    Оно вообще не зависит от Fs.

  16. Мастер у меня со стороны - FPGA формирует BCLK 256 кГц и WS 8 кГц. Но процессор об этом не знает. Вы комметарии посмотрели бы..

     

     

    Вы про это?

     

        // BCLK = 0.256 MHz (stereo, 16 bit/ch)
        tlv320aic23_setreg(TLV320AIC23_SRATE,            // Sample Rate Control
            3 * (1U << TLV320AIC23_SR_SHIFT) |    // BOSR = 0, SR[3:0] bits = 3: 12.288 / 256 / 6 = 8 kHz DAC and ADC sampling rate
            0 * (1U << TLV320AIC23_BOSR_SHIFT) |
            0    
            );

     

    В даташите на tlv320aic23 написано:

     

    In normal mode, BCLK = MCLK/4 for all sample rates except for 88.2 kHz and 96 kHz. For 88.2 kHz and 96 kHz sample rate,

    BCLK = MCLK.

     

    Тоже самое и для WM8731. А STM32 в режиме слейва плохеет от такого. У вас ПЛИС генерит BCLK = 0.256 MHz и формирует она это из клока, который используется и в кодеке. А сам кодек в режиме мастера генерит хрень, равную MCLK/4.

     

    Или вы про какие-то другие комменты?

     

     

     

  17. Т.е. вы заказали ПОВТОР, но подозревая свой косяк приложили зачем-то снова файл, не запросив при этом cam-файл на согласование.

     

    Я всегда прикладываю файлы. Я вообще думал, что при повторном производстве их используют для поиска платы. А они оказывается используют просто название. Все мои заказы на повторное изготовление, ВСЕГДА идут с приложенными файлами.

     

    Если бы я как раз подозревал что-то, естественно я бы запросил доп.согласование.

  18. Я извиняюсь, но "на дворе 21 век".

    Но иметь внятный документ, определяющий генерацию названия платы как набор предопределенных полей, ну хотя бы "филиал-служба-отдел-комната-дата" можно?

     

    ФГУП? :-)

     

    Понятное дело, что косяк с названием платы есть. Но не везде, и не у всех есть возможность писать документы по тому, "как" и "чего" называть, а потом еще следить за соблюдением их исполнения, для предотвращения таких косяков. И на дворе действительно 21-век, CRC по присланному проекту или MD5 какой-нибудь, по файлам проекта полностью решил бы проблему их идентификации при повторном изготовлении.

     

    И уж если размышлять дальше, я считаю, что к каждому заказу по почте, надо прикладывать файлы хотя бы, для подтвреждения права на них. А то, сейчас пол форума может кинутся заказывать washer.pcb (будь это реальным названием), зная его название. Узнать фирму, которая им владеет тоже можно. Где гарантии, что бывшие сотрудники не назаказывают клонов, зная название?

     

    Служба контроля качества, предложила переделать "срочно", по цена "несрочного" производства. Ну хоть так. :-)

     

     

     

     

     

     

     

     

  19. Меня тоже раздражает политика Резонита экономии на телефонных звонках, но может вы сами не ту галочку поставили?

     

    Я заказывал через почту.

     

    Тут ситуация такая, три месяца назад я заказывал плату под названием, ну допустим washer.pcb (название другое на самом деле). Она полностью подошла нам. Потом, был заказан "на скорую руку" прототип с таким же названием. На это как-то не обратили внимание, прототип нерабочий, к слову. Но в Резоните заменили старый хороший washer.pcb, на вновь заказанный washer.pcb-прототип в своей базе. А потом, когда мы заказали серию, нам и изготовили нерабочий прототип. На файлы приложенные к заказу никто внимания не обратил, просто достали из базы крайний washer.pcb.

     

    Ситуация усугубилась тем, что размеры washer.pcb и washer.pcb-прототипа одинаковые, слоев тоже самое количество. Это варианты одного и того же изделия, в прототипе хотели опробовать новую схемотехнику. По весу, размеру и слоям, его бы идентифицировать действительно не удалось бы. Только по контрольным суммам файлов. Да и моё мнение, что не должны были в Резоните сами решать, позвонили бы, обнаружив конфликт, я бы сам и подтвердил что делать.

     

  20. У меня так CPU-SLAVE<->CODEC-SLAVE всё работает, без pll...

     

    А кто же мастер-то у вас?

     

    Сформированный из этой частоты набор сигналов WS, BCLK идет на выводы соотвестсвующих I2S процессора. 12.288 на процессор не идет - она там не требуется в случае SLAVE.

     

    А кто их формирует и какая частота BCLK у вас?

     

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