Jump to content

Кинг

Members
  • Content Count

    599
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Кинг

  • Rank
    Завсегдатай
  • Birthday 07/22/1991

Информация

  • Пол
    Мужчина
  • Город
    Рязань

Recent Profile Visitors

9184 profile views
  1. катушка из медной проволоки думаю одна и таже... самый цимус то в схеме... у приемника она работает синусоида с частотой 125кгц для питания метки. а когда метка выкидывает в эфир данные считыватель определяет фронты и считывает последовательность битов. нашел в инете вот такие схемы но только чтото они не работают
  2. это считыватели. а я делаю передатчик. эмулятор Rfid метки
  3. Где купить и как она будет выглядеть?
  4. Собрал схему на AVR эмулятор домофонных таблеток. Ключи записанные в памяти передает кодирует все вообщем как надо... Возникла главная проблема как сделать антенну? собирал на 4 диодах, кондере и разумеется катушка рассчитывал количество витков в зависимости от диаметра все что удалось добиться это считал ее считыватель для карточек у которого антенна большая, а вот домофон вообще никак.... подскажите как правильно насхемотехничать?
  5. void ADCInit(void){ //--Enable ADC1 and GPIOA-- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; //Variable used to setup the GPIO pins //==Configure ADC pins (PA0 -> Channel 0 to PA7 -> Channel 7) as analog inputs== GPIO_StructInit(&GPIO_InitStructure); // Reset init structure, if not it can cause issues... GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); ADC1->CR2 |= ADC_CR2_CAL; //Запуск калибровки АЦП while (!(ADC1->CR2 & ADC_CR2_CAL)); ADC_InitTypeDef ADC_InitStructure; //ADC1 configuration ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //We will convert multiple channels ADC_InitStructure.ADC_ScanConvMode = DISABLE; //select continuous conversion mode ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//! //select no external triggering ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //right 12-bit data alignment in ADC data register ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //8 channels conversion ADC_InitStructure.ADC_NbrOfChannel = 2; //load structure values to control and status registers ADC_Init(ADC1, &ADC_InitStructure); //wake up temperature sensor //ADC_TempSensorVrefintCmd(ENABLE); //configure each channel ADC_Cmd(ADC1, ENABLE); } void get_adc (void) { unsigned int adc_res=0,adc_res2=0,voltage=0,voltage1=0; //Использовал переменную для отладки. Можно и без неё unsigned char index=0; unsigned int adc[7],adc1[7]; for(index=0;index<6;index++) { ADC_RegularChannelConfig(ADC1,ADC_Channel_0, 1,ADC_SampleTime_28Cycles5); ADC_ClearFlag (ADC1,ADC_FLAG_EOC); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC) == RESET); // wait for conversion to complete adc_res = ADC_GetConversionValue (ADC1); ADC_RegularChannelConfig(ADC1,ADC_Channel_1, 1,ADC_SampleTime_28Cycles5); ADC_ClearFlag (ADC1,ADC_FLAG_EOC); ADC_SoftwareStartConvCmd(ADC1, ENABLE); // start another while (ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC) == RESET); adc_res2 = ADC_GetConversionValue (ADC1); adc[index]= adc_res; adc1[index]=adc_res2; } volt=adc[1]+adc[2]+adc[3]+adc[4]+adc[5]; voltage=volt; volt=volt/5; volt= (volt * 80) / 1000; voltage=volt; amper=adc1[1]+adc1[2]+adc1[3]+adc1[4]+adc1[5]; voltage1=amper; amper=amper/5; amper=amper/0.02*10; amper= (amper * 80) / 100000; voltage1=amper; wat=(volt*amper)/100; } этот заработал
  6. ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular); этой строчки компилятор незнает если калибровку ставить перед запуском АЦП то он зацикливается на while(ADC_GetResetCalibrationStatus(ADC1));
  7. #include<stm32f10x_adc.h> #include<stm32f10x_rcc.h> #include<stm32f10x_gpio.h> #include<stm32f10x_rcc.h> #include<stm32f10x_dma.h> ErrorStatus HSEStartUpStatus; uint16_t ADCBuffer[] = {0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA}; void Sys(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus == SUCCESS) { /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* ADCCLK = PCLK2/4 */ RCC_ADCCLKConfig(RCC_PCLK2_Div4); /* Flash 2 wait state */ *(vu32 *)0x40022000 = 0x01; /* PLLCLK = 8MHz * 9 = 56 MHz */ RCC_PLLConfig(0x00010000, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while (RCC_GetSYSCLKSource() != 0x08); } /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE); RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_DMA1 , ENABLE ) ; DMA_InitStructure.DMA_BufferSize = 6; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADCBuffer; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_Init(DMA1_Channel1, &DMA_InitStructure); DMA_Cmd ( DMA1_Channel1 , ENABLE ) ; RCC_ADCCLKConfig ( RCC_PCLK2_Div6 ) ; RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1 , ENABLE ) ; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_NbrOfChannel = 2; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_7Cycles5); ADC_Cmd ( ADC1 , ENABLE ) ; ADC_DMACmd ( ADC1 , ENABLE ) ; ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd ( ADC1 , ENABLE ) ; } int main(void) { uint16_t res1=0,res2=0; Sys(); while(1) { res1=ADCBuffer[0] ; res2= ADCBuffer[1]; } }
  8. Пишу программу в Cocoox в нейй нашел пример для измерения с 6 каналов АЦП. /** ***************************************************************************** * @title main.c * @author habed * @date 22 Jan 2013 * @brief IN THE NAME OF GOD * here in this example i used DMA for access d * irectly to 6 ADC channel in regular mode * "Hosein Abedini"<k.h65 * 70@gmail.com> * ask me ur questions about. ******************************************************************************* */ ////// The above comment is automatically generated by CoIDE /////////////////// #include<stm32f10x_adc.h> #include<stm32f10x_rcc.h> #include<stm32f10x_gpio.h> #include<stm32f10x_rcc.h> #include<stm32f10x_dma.h> ErrorStatus HSEStartUpStatus; void Sys(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; uint16_t ADCBuffer[] = {0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA, 0xAAAA}; /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus == SUCCESS) { /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* ADCCLK = PCLK2/4 */ RCC_ADCCLKConfig(RCC_PCLK2_Div4); /* Flash 2 wait state */ *(vu32 *)0x40022000 = 0x01; /* PLLCLK = 8MHz * 9 = 56 MHz */ RCC_PLLConfig(0x00010000, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while (RCC_GetSYSCLKSource() != 0x08); } /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE); RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_DMA1 , ENABLE ) ; DMA_InitStructure.DMA_BufferSize = 6; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADCBuffer; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_Init(DMA1_Channel1, &DMA_InitStructure); DMA_Cmd ( DMA1_Channel1 , ENABLE ) ; RCC_ADCCLKConfig ( RCC_PCLK2_Div6 ) ; RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1 , ENABLE ) ; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_NbrOfChannel = 2; ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 5, ADC_SampleTime_7Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 6, ADC_SampleTime_7Cycles5); ADC_Cmd ( ADC1 , ENABLE ) ; ADC_DMACmd ( ADC1 , ENABLE ) ; ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd ( ADC1 , ENABLE ) ; } int main(void) { Sys(); while(1) { /*you can read 6 channels of ADC1 in ADC buffer*/ } } мне нужен канал PA.0, PA.1. ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_7Cycles5);//1 канал АЦП PA.0 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_7Cycles5);//2 канал АЦП PA.1 забираю из ADCBuffer[0] и ADCBuffer[1]. значения только есть в ADCBuffer[0] а в ADCBuffer[1] пусто
  9. а какой у топик стартера опыть программирования на СИ? с помощью команды для ардуино ножка А2 гори. долеко неуйдешь. мне для сборки, отладки блока запуска автомобиля с кнопки, реле, дисплея и чтобы они общались по CAN шине пол года нехватило. С AVR пришлось переучиваться на STM32. передделавыть по 4 раза печатные платы, спалить несколько раз микроконтроллеры, времени нужно куча. 3 года назад когда только начинал думал что все быстро и легко
  10. NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); void USB_LP_CAN1_RX0_IRQHandler (void) { if (CAN_GetITStatus(CAN1,CAN_IT_FMP0)) { // message pending ? CAN_Receive(CAN1,0,&RxMessage); // read the message // set receive flag } } я делал на f103 прерывание работает, только с фильтром разобраться немогу
  11. Возможно ли усилить катушку считывания у иммобилайзера чтобы брала на 30см? перенести на другое место удалось кольцо наматывал тупо измеря сопротивление оригинальной
  12. в схеме подключения gsm starline есть как реле подлючить к webasto. можно купить этот модуль он просто gsm и подключить и даже есть приложение на android у меня такой стоит и все круто
  13. когда в программе нажимаю конект она посылает англ букву V в МК и в ответ он должен отправить версию прошивки
  14. собрал я вот схему для считывания паккетов CAN шины. но она у меня неработает . т.е FT245 определяется программой MProg программируется. но если чтото послать на нее с терминала ни на одной ножке нет никаких изменений Schematic.pdf
  15. Кинг

    Stm32 К Nrf24L01

    дорожку идущую от кондера обрезал. эффект тотже. можно попробовать если всю антенну вырезать
×
×
  • Create New...