Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: Характеристики STM32

Сб мар 02, 2019 07:41:30

В контексте STM32 выполнять код из SPI может STM32L4 серия, с задержками 1-2WS. В доке указано в зависимости от режима 0,469 и 0,754 выборки на МГц, что естественно медленнее чем из внутренней Flash.

Re: Характеристики STM32

Ср окт 28, 2020 10:21:12

Reflector,
Подскажите
данные Блу пилл 103C8T6 Есть код слив 6К самплов c АЦП в порт А0-А7
на 3000 +-сампле рассинхрон клока и защелкивания данных в порту
(выбросы кода АЦП + 127+-)
а потом что самое интенсное через 200 + -тактов снова синхрон
клок 1/6 от тактовой 96 итого 16 мегасамплов в сек

Код:
 // tim1       
          htim1.Init.Period = 5;
          sConfigOC.Pulse = 3;  //  pure 1/2 Meandr   16MHz
           HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //adc clock
//disable all IRQ ?
         __disable_irq ();
         SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
//
         void PORTA_ADC( ) //6000  sample
{
    __HAL_TIM_SET_COUNTER(&htim1, 0); //Reset timer1(ADC clock) for sync to ADC
      adc_data[0]= GPIOA->IDR;
      adc_data[1]= GPIOA->IDR;
      adc_data[2]= GPIOA->IDR;
      adc_data[3]= GPIOA->IDR;
      adc_data[4]= GPIOA->IDR;
      adc_data[5]= GPIOA->IDR;
                   // up to 5999

хотел бы кинуть весь проект в приват

Re: Характеристики STM32

Ср окт 28, 2020 10:58:37

Код:
adc_data[0]= GPIOA->IDR;
adc_data[1]= GPIOA->IDR;
adc_data[2]= GPIOA->IDR;
adc_data[3]= GPIOA->IDR;
adc_data[4]= GPIOA->IDR;
adc_data[5]= GPIOA->IDR;
      // up to 5999

Нельзя так делать, о чем ранее в теме уже писалось. Даже если этот будут отдельные asm инструкции нет никаких гарантий, что компилятор так все и оставит. Должен быть один asm блок, типа такого:
Код:
   uint8_t buf[6000];
   const uint32_t idr = (uint32_t)&GPIOA->IDR;
   uint32_t tmp;

   asm(
         "LDRB %2, [%0]\n"
         "STRB %2, [%1], #1\n"
         ....
         "LDRB %2, [%0]\n"
         "STRB %2, [%1], #1\n"
         : : "r" (idr), "r" (buf), "r" (tmp)
      );

Это для gcc, для других компиляторов может быть по-другому.

Re: Характеристики STM32

Ср окт 28, 2020 11:36:27

Reflector Спасибо
Компиллятор кейл
Подскажите в таком варианте остется 6 тактов на сампл ?
Последний раз редактировалось 12val12 Ср окт 28, 2020 11:40:01, всего редактировалось 1 раз.

Re: Характеристики STM32

Ср окт 28, 2020 11:38:54

в таком варианте остется 6 тактов на сампл ?

Да, должно остаться, быстрее F1 не умеет.

Re: Характеристики STM32

Ср окт 28, 2020 11:52:50

еще один из зудящих вопросов
Код:
           for (it =0; it<6000;it++)                
{   GPIOB->BSRR = GPIO_BSRR_BS10;  //clkUp
    adc_data[0]= GPIOA->IDR;
    GPIOB->BSRR = GPIO_BSRR_BR10;  //clkDown
}

такая конструкция сколько Даст мегасаплов ?
может ли контроллер одновременно делать GPIOA->BSRR = GPIO_BSRR_BS0; и adc_data[0]= GPIOA->IDR; ?
ведь первое это какой то атомарный доступ авторое обычный
а если такая же контрукция но развернутый цикл

Re: Характеристики STM32

Ср окт 28, 2020 12:05:13

такая конструкция сколько Даст мегасаплов ?

Нужно замерять, я не могу хотя бы потому, что от всех F1 уже избавился.
может ли контроллер одновременно делать GPIOA->BSRR = GPIO_BSRR_BS0; и adc_data[0]= GPIOA->IDR; ?

Не важно какой доступ, данные с портов читаются через шины, для F1 -это APB, к ней доступ идет через AHB чтобы его еще больше замедляет, потому F1 с портами работает так медленно. У большинства мк порты на AHB, тогда вместо 6-ти тактов обычно получается 4, а F3 работает с портами напрямую, минуя шину, тогда можно и 2 такта получить. Одновременно читать и писать с портов можно только если шины разные и в качестве второго мастера выступает DMA. Если хочешь большую скорость, то впаяй на свой Блу пилл F303, он по ногам совместим. Как вариант, можно генерить строб таймером который вдобавок пинает DMA читающий данные, я делал так на вывод, но это тактов 12 минимум...

Re: Характеристики STM32

Ср окт 28, 2020 12:20:39

Reflector,
есть только STM32F411CEU6 сколько времени чтение порта?

Re: Характеристики STM32

Ср окт 28, 2020 12:24:12

есть только STM32F411CEU6 сколько времени чтение порта?

На F407 было 4 как на ассме, так и при помощи DMA если мк усыплять, с F411 наверняка то же самое будет.

Re: Характеристики STM32

Ср окт 28, 2020 17:31:19

нашел бяку ..не 3000е элементы а 4000+
кейл начинает бесить Зачем он дробит смещение ?
явно связано состраницей 4 K но страницей чего ?
;;;4696 adc_data[4091]= GPIOA->IDR;
005fbc 680a LDR r2,[r1,#0]
005fbe f8802ffb STRB r2,[r0,#0xffb]
;;;4697 adc_data[4092]= GPIOA->IDR;
005fc2 680a LDR r2,[r1,#0]
005fc4 f8802ffc STRB r2,[r0,#0xffc]
;;;4698 adc_data[4093]= GPIOA->IDR;
005fc8 680a LDR r2,[r1,#0]
005fca f8802ffd STRB r2,[r0,#0xffd]
;;;4699 adc_data[4094]= GPIOA->IDR;
005fce 680a LDR r2,[r1,#0]
005fd0 f8802ffe STRB r2,[r0,#0xffe]
;;;4700 adc_data[4095]= GPIOA->IDR;
005fd4 680a LDR r2,[r1,#0]
005fd6 f8802fff STRB r2,[r0,#0xfff]
;;;4701 adc_data[4096]= GPIOA->IDR;
005fda 680a LDR r2,[r1,#0]
005fdc f5005080 ADD r0,r0,#0x1000 //ЧТО ЗА ХРЕНЬ???
005fe0 7002 STRB r2,[r0,#0]
;;;4702 adc_data[4097]= GPIOA->IDR;
005fe2 680a LDR r2,[r1,#0]
005fe4 7042 STRB r2,[r0,#1]
;;;4703 adc_data[4098]= GPIOA->IDR;
005fe6 680a LDR r2,[r1,#0]
005fe8 7082 STRB r2,[r0,#2]
;;;4704 adc_data[4099]= GPIOA->IDR;
005fea 680a LDR r2,[r1,#0]
005fec 70c2 STRB r2,[r0,#3]
;;;4705
;;;4706 adc_data[4100]= GPIOA->IDR;
005fee 680a LDR r2,[r1,#0]
005ff0 7102 STRB r2,[r0,#4]
;;;4707 adc_data[4101]= GPIOA->IDR;
005ff2 680a LDR r2,[r1,#0]
005ff4 7142 STRB r2,[r0,#5]
;;;4708 adc_data[4102]= GPIOA->IDR;
005ff6 680a LDR r2,[r1,#0]
005ff8 7182 STRB r2,[r0,#6]
;;;4709 adc_data[4103]= GPIOA->IDR;
005ffa 680a LDR r2,[r1,#0]
005ffc 71c2 STRB r2,[r0,#7]
;;;4710 adc_data[4104]= GPIOA->IDR;
005ffe 680a LDR r2,[r1,#0]
006000 7202 STRB r2,[r0,#8]
;;;4711 adc_data[4105]= GPIOA->IDR;
006002 680a LDR r2,[r1,#0]
006004 7242 STRB r2,[r0,#9]
;;;4712 adc_data[4106]= GPIOA->IDR;
006006 680a LDR r2,[r1,#0]
006008 7282 STRB r2,[r0,#0xa]
;;;4713 adc_data[4107]= GPIOA->IDR;
00600a 680a LDR r2,[r1,#0]
00600c 72c2 STRB r2,[r0,#0xb]
;;;4714 adc_data[4108]= GPIOA->IDR;

Re: Характеристики STM32

Ср окт 28, 2020 18:08:03

нашел бяку ..не 3000е элементы а 4000+

Я про это и говорил, сам раз столкнулся, причем там было все на ассме, но отдельными строками и примерно через сотню команд между LDR/STR компилятор нагенерил всякого, а потом до самого конца опять все нормально :)

Re: Характеристики STM32

Ср окт 28, 2020 18:14:01

Reflector,
не могу первести на асм в кейле ..((
покаустал воеватьужал массив до 4096
Последний раз редактировалось 12val12 Ср окт 28, 2020 19:20:04, всего редактировалось 1 раз.

Re: Характеристики STM32

Ср окт 28, 2020 19:08:56

"
005fd6 f8802fff STRB r2,[r0,#0xfff]
...
005fdc f5005080 ADD r0,r0,#0x1000 //ЧТО ЗА ХРЕНЬ???
005fe0 7002 STRB r2,[r0,#0]
"
так, наверное - инструкция 32b, FFF мак. возможное смещение (в инструкции)

"005ff0 7102 STRB r2,[r0,#4]" - 16b инструкция.
Ответить