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

gafbich

Members
  • Постов

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

  • Посещение

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

  1. 12 часов назад, Alex сказал:

    Не знаю что это такое, глянул даташит - там обычный SPI. Что там может быть сложного ? :huh:

    Я в курсе, что там обычный SPI, с этим проблем нет. А вот в реализации функции WRITE_TAG проблемы. Все остальное работает +\-

  2. Доброй ночи, пытаюсь сроднить HTRC11001 и stm32(просто сейчас под рукой он), цель затеи такова - чтение запись EM-Marine. Чтение карт получается, а вот как реализовать запись не понимаю, из контекста даташита есть такая процедура WRITE_TAG, если я правильно понимаю с помощью ее можно реализовать подачу импульса конкретной ширины. В общем буду рад вашей помощи в данной задаче. Если есть желающие помочь не бесплатно - тоже рассмотрю ваше предложение. Проект не коммерческий - выгода только разобраться.

  3. 15.09.2019 в 12:20, DYeliyev сказал:

    Это как бы не совсем в тему.  Опять же мало информации. Версия чипа ?  На SPI реагирует или нет ?

    Доброго Вам утра, спасибо, что откликнулись, получилось самостоятельно решить проблему. 

    Тему можно закрывать. 

  4. Столкнулся с следующей проблемой, не могу передать сырые данные (при помощи ногодрыга) в эфир при помощи встроенного трансивера CC1101, цель передать Прицетон (для управления умным домом). 

    //Через Timer_A получилось передавать 

    TA1CCR0 = 50;
    TA1CCR1 = 50;
    
    TA1CCTL0 = OUTMOD_4;
    TA1CCTL1 = OUTMOD_4;
    TA1CTL = TASSEL__SMCLK + MC_1 + TACLR;
      
    // Init P2.2 to output TX signal to the radio 
    P2SEL |= BIT2;
    P2DIR |= BIT2;
      
      
    P2SEL |= BIT7;
    P2DIR &= ~BIT7;
      
    PMAPPWD = 0x02D52;                        // Get write-access to port mapping regs
    P2MAP2 = PM_TA1CCR0A;                     // Map TA output to TX to P2.2
    PMAPPWD = 0x00;                           // Lock Port mapping

     

    Жду Вашей помощи.

  5. Александр, спасибо за помощь. Проблема в другом оказалась, впаял микрофон с радиомаяка, работает идеально, внутренне сопротивление 768 Ом - гула нет, к сожалению не знаю маркировку того микрофона, у моего сопротивление порядка 900 Ом. Вопрос в другом, как запустить на этом микрофоне. По даташиту диапазон напряжения должен быть вроде как до 2,2В. Я свой с Али заказывал, параметры не указаны, но я так понимаю он на 4.5В

  6. 44 минуты назад, Александр Д. сказал:

    какая к черту земля? Даташит читали?
    схему покажите, как подключаете

    я просто припаивал электретный микрофон к выводам MicN и MicP и всё работает.

    Буфер обмена-1.jpg

    Буфер обмена-2.jpg

    Ок, а что же по Вашему припаяно к конденсаторам?

    1 час назад, Дед Илья сказал:

    Для уменьшения гула в GSM устройствах, микрофон подключают симметричной линией.

    А как это выглядит?

    Александр Д. 

    Все как схеме выше, так и у меня с теми же номиналами типоразмера 0603. Единственно меня смущает только то, что при разводке UART использую перемычки ввиду сопротивлений 0 - под ними земля проходит, могут ли они в виде индуктивности такие наводки давать?!

  7. 34 минуты назад, smart_pic сказал:

    Что бы помочь решить проблему:

    1. Покажите разводку печатной платы модема с микрофоном

    2. Если микрофон выносной , то какова длина линии. На длинных линиях возможно потребуется согласование

    3. Подключение земли микрофона и модема

    Длинна не более сантиметра.

    Земля общая.

    Со стороны подключения микрофона участок текстолита срезан по контакты микрофона.

    IMG_20180104_221915.jpg

  8. Прошу оказать помощь в подключении микрофона к GSM модему SIM800C. На текущий момент имеется проблема, подключил микрофон согласно даташиту на данный модуль (игрался регистром AT+CMIC), при снятии трубки модемом (при помощи AT команды), на фоне постоянный гул (редно, крайне редко он исчезает, на несколько секунд), как мне его победить.?!  Кто сталкивался с данной задачей - пишите!

  9. Специально для oldmao, ваш сарказм не уместен. А за книженцию спасибо. Про видеоуроки это все хорошо, но принцип изложения информации мне не нравится, смотрел не уложилось, либо создавалась еще куча вопросов. Для colorad, да хоть каскадные усилители, усилители для микрофона...

  10. Уважаемые, обращаюсь к Вам на предмет получения знаний. Проблема в том что я не очень понимаю принцип работы транзистора, много задумок, а они разбиваются о барьер не знания. Могли бы Вы мне оказать услугу, дать мне понимания работы транзистора что БИ что ПОЛЕВОГО. Я правда не знаю, сколько такая услуга может стоить, но я готов потерпеть расходы. Просто устал как мартышка собирать чужие схемы. С Уважением Сергей.

  11. Доброй ночи, ситуация значит такая имеется модуль SIM800L, подключил электретный микрофон ECM-60D согласно даташиту на модуль. При вызове один шум, если громко в микрофон сказать, на другой стороне еле слышно. В даташите нашел команду AT+CMIC - настройка чувствительности микрофона - модуля под рукой нет, проверить не могу. Юзать команду?

  12. Еще один вопрос, в чем может быть затык в работе SPI на STM8S, к примеру настраивал на STM32 проблем вообще не было. а на данном камне мне посл каждой посылки (передачи) надо делать задержу в 20 nop`ОВ, а  иначе выброс кривой, если что могу кинуть с лог анализатора что получается без nop а что с nop

     

  13. Объясните пожалуйста следующие, на руках имеется STM8S103F3P6, сначала была проблема запустить SPI, проблема была даже не в запуске а корректной работе - сделал! А вот с таймером я засел вообще. Хочу сделать программный delay по средствам таймера TIM1 без прерываний. Ниже скидываю инициализацию таймера TIM1 и обработчник(функция delay)

     

    Тактовая частота 2MHz.

     

    Где загвоздка?

     

    #include "iostm8s103f3.h"
    
    void TIM1_init(void);
    void delay_us(unsigned int d);
    
    void TIM1_init(void)
    {
      ////Величина автоперезагрузки////
      unsigned int auto_preload = 65535;
      TIM1_ARRH=((auto_preload&0xFF00)>>8);
      TIM1_ARRL=auto_preload&0x00FF;
      ////////////////////////////////
      ////////Установка делителя//////
      unsigned int div_load = 2000;
      TIM1_PSCRH=((div_load&0xFF00)>>8);
      TIM1_PSCRL=div_load&0x00FF;
      ////////////////////////////////
      TIM1_CR1|=(1<<7)|(1<<1)|(1<<0);
    }
    
    void delay_us(unsigned int d)
    {
      TIM1_CNTRH=0;TIM1_CNTRL=0;
      TIM1_ARRH=((d&0xFF00)>>8);
      TIM1_ARRL=d&0x00FF;
      while(((unsigned int)((TIM1_CNTRH<<8)+TIM1_CNTRL))<d){};
    }
    
     int main()
    {
      /////////////////////////////////////
      //Отключаем Всю периферию			// 
      CLK_PCKENR1=0x00;
      CLK_PCKENR2=0x00;
      /////////////////////////////////////
      CLK_PCKENR1|=(1<<7);//Включаем тактирование для TIM1
      TIM1_init();
      //Настройка ногодрыга для проверки таймера//
      PB_DDR|=(1<<5);
      PB_CR1|=(1<<5);
      PB_CR2|=(1<<5);
      ////////////////////////////////////////////
       while(1)
      {
        PB_ODR&=~(1<<5);
        delay_us(1000);//1сек
        PB_ODR|=(1<<5);
        delay_us(1000);//1сек
      }
      return 0;
    }
                                                               

     

  14. Есть сигнал от датчика, который передается по "воздуху", перехват сделал при помощи таймера и условия в прерывании, на данном этапе интересно применить захват и реализовать при помощи его!

  15. Проблема с настройкой внешнего прерывания на PA1

    Настройки прерывания:

    #include "stm32f0xx_exti.h"
    #include "stm32f0xx_gpio.h"
    #include "stm32f0xx_rcc.h"
    #include "stm32f0xx_misc.h"
    #include "stm32f0xx_syscfg.h"
    
    EXTI_InitTypeDef exti;
    NVIC_InitTypeDef nvic;
    GPIO_InitTypeDef gpio;
    
    void RCC_Set(void);
    void exti_setting(void);
    void GPIO_Set(void);
    
    
    //############################################################//
    //##################Включаем тактирование#####################//
    //############################################################//
    void RCC_Set(void)
    {
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);
    }
    //############################################################//
    //############################################################//
    //############################################################//
    
    //############################################################//
    //#######################Настройка GPIO#######################//
    //############################################################//
    void GPIO_Set(void)
    {
    gpio.GPIO_Mode=GPIO_Mode_OUT;
    gpio.GPIO_OType=GPIO_OType_PP;
    gpio.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
    gpio.GPIO_PuPd=GPIO_PuPd_NOPULL;
    gpio.GPIO_Speed=GPIO_Speed_Level_2;
    GPIO_Init(GPIOC,&gpio);
    
    gpio.GPIO_Mode=GPIO_Mode_IN;
    gpio.GPIO_OType=GPIO_OType_PP;
    gpio.GPIO_Pin=GPIO_Pin_1;
    gpio.GPIO_PuPd=GPIO_PuPd_NOPULL;
    gpio.GPIO_Speed=GPIO_Speed_Level_2;
    GPIO_Init(GPIOA,&gpio);
    }
    //############################################################//
    //############################################################//
    //############################################################//
    
    
    //############################################################//
    //###################Настройка Прерывания#####################//
    //############################################################//
    void exti_setting(void)
    {
    exti.EXTI_Line=EXTI_Line1;
    exti.EXTI_LineCmd=ENABLE;
    exti.EXTI_Mode=EXTI_Mode_Interrupt;
    exti.EXTI_Trigger=EXTI_Trigger_Rising_Falling;
    EXTI_Init(&exti);
    
    nvic.NVIC_IRQChannel=EXTI0_1_IRQn;
    nvic.NVIC_IRQChannelCmd=ENABLE;
    nvic.NVIC_IRQChannelPriority=0;
    NVIC_Init(&nvic);
    
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1);
    NVIC_EnableIRQ(EXTI0_1_IRQn);
    }
    //############################################################//
    //############################################################//
    //############################################################//
    
    
    int main(void)
    {
    RCC_Set();
    GPIO_Set();
    exti_setting();
    
    while(1)
    {
    
    }
    }
    
    //############################################################//
    //##################Обработчик Прерывания#####################//
    //############################################################//
    void EXTI0_1_IRQHandler(void)
    {
    GPIOC->ODR^=GPIO_Pin_8; //Инвертируем состояние светодиода
    EXTI_ClearITPendingBit(EXTI_Line1);
    }
    //############################################################//
    //############################################################//
    //############################################################//
    

    Чтобы не подать на PA1, обработчик не отрабатывает! Что не так, что я упустил?

  16. Немного не в тему.

    TIM3->CR1|=(0<<9)|(0<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1);

    Тут достаточно было написать

    TIM3->CR1 = (1<<1);

    tim3.TIM_Prescaler=79+1; tim3.TIM_Period=65534+1;

    А здесь вместо "+" нужен "-".

    Точно не уверен, но вместо точки надо "->"

    На счет минуса я тоже согласен. Там все верно относительно синтаксиса.

  17. Есть отладочная плата (STM32F103C8T6 + внешний кварц 8МГц), при настройке и запуске таймера с дрыганием ноги за один такт, при всех настройках не могу добиться чтобы один такт ровнялся 1мкс.

    Вот мой код

    #include "stm32f10x_rcc.h"
    #include "stm32f10x_gpio.h"
    #include "stm32f10x_tim.h"
    #include "stm32f10x_conf.h"
    void InitTMI(void)
    {
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    TIM2->CR1=(0<<9)|(0<<8)|(1<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1);
    TIM2->ARR=3;
    TIM2->PSC=8-1;
    TIM2->CNT=0;
    TIM2->CR1|=(1<<0);
    }
    int main(void)
    {
    //RCC_HSE_ON;
    RCC->CR=RCC_HSE_ON;
    RCC->CFGR&=(~(1<<7)|(1<<6)|(1<<5)|(1<<4));
    while (!(RCC->CR & RCC_CR_HSERDY)) {}; // Ожидание готовности HSE.
    RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1.
    RCC->CFGR |= RCC_CFGR_SW_HSE; // Выбрать HSE для тактирования SW0=1.
    
    GPIO_InitTypeDef gpioA;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    gpioA.GPIO_Mode=GPIO_Mode_Out_PP;
    gpioA.GPIO_Speed=GPIO_Speed_2MHz;
    gpioA.GPIO_Pin=GPIO_Pin_1;
    GPIO_Init(GPIOA,&gpioA);
    InitTMI();
       while(1)
       {
     if(TIM2->CNT==1){GPIO_ResetBits(GPIOA,GPIO_Pin_1);}
     if(TIM2->CNT==2){GPIO_SetBits(GPIOA,GPIO_Pin_1);}
     //GPIO_ResetBits(GPIOA,GPIO_Pin_1);
       }
    }
    

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