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

ArtTheft

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

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

  • Посещение

Репутация

0 Обычный

Информация о ArtTheft

  • Звание
    Участник
    Участник
  1. Так это видимо человек случайно подключил центральный вывод, и видимо это все находиться под модулем и так просто исправить нельзя.. Дорожки такие тонкие, потому что делал не Я, у меня пока руки не так ровно растут. Насчет вывода gnd, то не очень понял что за пер.отв. нет. А насчет прозвонки, то у меня тестер не с пищалкой, а с цифровой индикацией... 1 - нет контакта, 001 - есть контакта, между площадками...
  2. У моей батареи разрядная характеристика по вашему сайту 2С. А насчет вывода земли, спасибо за подсказку, не заметил. Проверю на плате уже более делательно. П.с: Проверил тестером все выводы GND возле симкарты - все подведены к полигону...
  3. Вполне возможно, хотя лучшим вариантом будет регулируемый блок питания. И я наверно сейчас задам один из самых дурацких вопросов, но может ли эта проблема быть из-за того, что человек который паял плату, случайно заземлил выход RF_ANT?
  4. Дело в том, что плата 2-ух слойная + там 2 платы. Одна для GPS, другая для GSM. Но вот все равно прикреплю варианты в JPG
  5. Приветствую всех. Очередная проблема gsm модулями. При регистрации в сети, модуль выключается и как уже раньше говорили, это скорее всего проблема с питанием. В прикрепленном файле - схема в SL6 по которой собиралась схема. Батарея используется на 1500 мАч, специально заказанная с сайта микрочипа. Уже даже не знаю в какую сторону смотреть. FB1 на схеме - это предохранитель. Еще суть в том, что разработанная схема, которая была любезно предоставленна другим человеком, работает у него от обычной телефонной батареи Заранее благодарен за помощь... GSM_GPS_V1.2.zip
  6. Приветствую всех. Очередная проблема gsm модулями. При регистрации в сети, модуль выключается и как уже раньше говорили, это скорее всего проблема с питанием. В прикрепленном файле - схема в SL6 по которой собиралась схема. Батарея используется на 1500 мАч, специально заказанная с сайта микрочипа. Уже даже не знаю в какую сторону смотреть. FB1 на схеме - это предохранитель. Еще суть в том, что разработанная схема, которая была любезно предоставленна другим человеком, работает у него от обычной телефонной батареи Заранее благодарен за помощь...
  7. Разбираюсь в очередной раз с UART. Пожалуйста можете мне толково обьяснить в чем разница между этими 2 кусками кода: void USART_Configuration(void) { // Включаем модули USART1 и GPIOA, а также включаем альтернативные функции выходов RCC->APB2ENR|= RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; // Контакт PA9 будет выходом с альтернативной функцией, а контакт PA10 - входом GPIOA->CRH &= !GPIO_CRH_CNF9; GPIOA->CRH |= GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9_0 | GPIO_CRH_CNF10_0; // Настраиваем регистр тактирования, скорость составит 115200 бод (при тактовой частоте 24 МГц) USART1->BRR = 0xD0; // Включаем TxD и RxD USART USART1->CR1 |= USART_CR1_TE | USART_CR1_RE; // Запускаем модуль USART USART1->CR1 |= USART_CR1_UE; // Разрешаем прерывание по приёму информации с RxD USART1->CR1 |= USART_CR1_RXNEIE; // Назначаем обработчик для всех прерываний от USART1 NVIC_EnableIRQ(USART1_IRQn); // Бесконечный цикл } И вот этим: void USART_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE); /* Конфигурируем USART1 Tx (нога PA.09) как симметричный (push-pull) пин */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Конфигурируем USART1 Rx (PA.10) как вход без подтяжки */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; // скорость передачи USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* Включаем USART1 */ USART_Cmd(USART1, ENABLE); } Ведь там и там идет конфигурация входа и выхода USART, конфигурация самого USART. В первом лишь обьявляется обработчик прерываний. Почему при замене кода, первый работает отлично, второй же ничего не отрабатывает. П.с: Понял в чем проблема, можно тему удалять. Я не разрешил прерывание по приёму информации с RxD и не назначил обработчик прерываний...
  8. То есть либо взять что Вы предложили, либо заменить на F103? И последний вопрос, надо ли будет писать отдельно прошивку для данного МК, чтобы он определялся при подключении? Вообщем суть такова, что при подключении устройства и запуске программы на сайте, программа определяла устройство и выдавала какую-то информацию о нем. Допустим номер устройва, уникальный ИД, версия прошивки. И если есть новая прошивка для устройства, оно бы предлогало пользователю обновить ее.
  9. Есть такая идея прошивать МК STM32F100CBT6 который находить в устройстве посредством USB. А главное удаленно. Суть в том, что допустим на сайте будет находить программа написанная на Джава, которая будет через USB кабель коннектитьсяк МК, проверять на наличие уникального ID, проверять версию прошивки и прошивать если версия ниже, чем та что есть в базе сайта. Но вопрос состоит вот в чем. Как правильно построить схему USB коннектора между МК и USB выходом. Допустим как это сделанно на STM32VLDiscovery Заранее благодарен за помощь и очень буду признателен за примеры схем или ссылки на примерные проекты.
  10. Как раз идет L02A, но скорее всего я буду менять на что-то другое.
  11. Насчет основ это я понимаю, что так с нуля ничего толкового не получиться... Но дело еще в том, что это код был в примере с сайта схем.нет...и еще на одном сайте. Это сборная конструкция из 2 кусков кода.
  12. Эх. Понятно. Не могли бы Вы все таки указать хоть на самые основные ошибки. Придеться вникать во все азы программирования дабы исправить ошибки...
  13. Исправил косяки в коде. Какие еще ошибки я пропустил? #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "string.h" #include "stdio.h" #include "gps_parser.h" #define buflength (256) char uart1_rx_buf[buflength]; //Буфер для приёма сообщения. volatile unsigned char uart1_rx_bit=0; //Номер байта UART принимаемого в буфер. //Структуры для инициализации GPIOA и USART1 GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; int main(void) { // Включаем модули USART1 и GPIOA, а также включаем альтернативные функции выходов RCC->APB2ENR|= RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; // Контакт PA9 будет выходом с альтернативной функцией, а контакт PA10 - входом GPIOA->CRH &= !GPIO_CRH_CNF9; GPIOA->CRH |= GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9_0 | GPIO_CRH_CNF10_0; // Настраиваем регистр тактирования, скорость составит 9600 бод (при тактовой частоте 24 МГц) USART1->BRR = 0xD0; // Выключаем TxD и RxD USART USART1->CR1 |= USART_CR1_TE | USART_CR1_RE; // Запускаем модуль USART USART1->CR1 |= USART_CR1_UE; // Разрешаем прерывание по приёму информации с RxD USART1->CR1 |= USART_CR1_RXNEIE; // Назначаем обработчик для всех прерываний от USART1 NVIC_EnableIRQ(USART1_IRQn); // Бесконечный цикл while(1); } void USART1_Send(char chr) { while(!(USART1->SR & USART_SR_TC)); USART1->DR = chr; } void USART1_Send_String(char* str) { int i=0; while(str[i]) USART1_Send(str[i++]); } // Обработчик всех прерываний от USART1 void USART1_IRQHandler(void) { char uart_data; if (USART1->SR & USART_SR_RXNE) //Проверяем, прило ли чтонибудь в UART { uart_data=USART1->DR; //Считываем то что пришло в переменную... uart1_rx_buf[uart1_rx_bit]=USART1->DR; //Помещаем принятый байт в буфер. uart1_rx_bit++; if ((uart1_rx_buf[uart1_rx_bit]==",")&&(uart1_rx_buf[uart1_rx_bit+1]==",")) //Если пришло сообщение о нажатии { uart1_rx_buf[uart1_rx_bit] = "0"; uart1_rx_buf[uart1_rx_bit+1] = ","; } } USART1_Send_String(uart1_rx_buf); memset(uart1_rx_buf, 0, sizeof(uart1_rx_buf)); //Очищаем буфер uart1_rx_bit=0; //Сбрасываем счетчик if (USART3->SR&USART_SR_TC) // Если прерывание по завершению передачи. { USART3->SR&=~USART_SR_TC; // Очистить флаг "Передача завершена". } }
  14. Дело в том, что я просто хотел совместить свой первоначальный код с данным парсером но он неверно работал, либо же я неправильно пытался вывести хоть какие-то его результаты.
  15. 1. Вначале же она обьявлена: volatile unsigned int uart1_rx_bit; 2. Спасибо за подсказку, поправлю. 3. Я так понимаю надо добавить uart1_rx_bit++; Видимо забыл исправить этот кусок кода 4. Это я тоже поправлю. 5. И это тоже исправлю.. Спасибо за подсказки..
×
×
  • Создать...