Jump to content

    

DmitryDI

Участник
  • Content Count

    67
  • Joined

  • Last visited

Community Reputation

0 Обычный

About DmitryDI

  • Rank
    Участник

Контакты

  • ICQ
    318817674

Информация

  • Город
    Санкт-Петербург

Recent Profile Visitors

1050 profile views
  1. 1.Я установил плату PCI-1612BU. 2. установил джамперы 1,2 порт RS485 3,4 RS232 3. соединил разъемы 1 и 2 порта RS485 1 контакт у 1, 2 ко 2-му DB9 4. провел работу в Windows XP - все прекрасно работает - данные идут между 1 и 2 портом 5. запустил QNX 4.25 6. запустил свой драйвер (сам написал) - все прекрасно работает, но там у меня есть проблемки - тногда зависает PC из-за моего драйвера, поэтому решил использовать Ваш фирменный драйвер для QNX 4.25. 7.запустил ./Dev.seradv950 & - порты определились 8. отправляю в один порт ttyAP1 например, 5 байт 9. получаю в ttyAP2 только 1 байт 10. после того как закрываю портttyAP1 получаю в порт ttyAP2 остальные байты. 11. и так все время. На мой взгляд проблема в необходимости конфигурации драйвера или порта, но как это сделать ???
  2. STM32 Вопрос про I2C

    Ну и как получилось завести I2C? Может есть вариант правильной инициации?
  3. Цитата(asdlfjkajkltewljf @ May 19 2011, 13:40) давай дружить ) скажи номер аськи , удалось зашить, но на данный момент только вручную, с помощью arm-atollic-eabi-gdb спасибо, друг. ты спас меня от неминуемой гибели На здровье. ICQ 318817674
  4. Цитата(asdlfjkajkltewljf @ May 19 2011, 13:19) именно её и скачал. сейчас методом проб и ошибок выяснил, что нужно нажать reset на плате TE-STM32F107 в момент запуска gdbserver'а тогда сервер нормально загружается и ждет соединения. проект скомпилировал. как прошить не могу разобраться, что куда жать? при нажатии кнопки debug - все содержимое проекта заливается во флэш или рам (задается в свойчтвах) - у меня такая же плата - reset не требует
  5. SWD не поддерживался в старой версии Atollic 1.3. - в новой 2. - все работает скачай с сайта ATOLLIC версию lite 2.1.0
  6. Установи весию lite от Atollic - это тот же самый Eclipse - но с ним ST-LINK работает, проекты с Eclipse совместимы.
  7. Переход из IAR в Atollic TrueSTUDIO STM32

    Цитата(AHTOXA @ May 14 2011, 22:42) Проверьте имена обработчиков прерываний, чтоб совпадали с теми, что объявлены в таблице векторов. Сравнивал стартовые файлы с расширением *.s - имена совпадают. Там я не до конца понял о выборе устройства - по умолчанию ****CL, как и в IAR.
  8. В связи с переходом на более дешевое ПО пришлось переводить проекты из IAR в Atollic TrueSTUDIO. Все вроде бы работает – прерывания, таймеры, ... . Кроме порта САN (в IAR все работало) – не срабатывают прерывания, сигнал с порта не идет. Все библиотеки одинаковы. В чем может быть проблема?
  9. Цитата(andrei_moiseev @ Apr 14 2011, 21:11) olimp07 ваши ни мыло ни личный ящик не доступны напишите мне в личку свой имейл есть что обсудить. У меня есть большой опыт по работе с Bluetooth: - перепрошивка модулей Bluetooth (написание собственных профилей в Bluelab, изменение доступа к модулю – запрос дополнительных паролей, криптография) - разработка на основе данных модулей аппаратуры (медицинская, радиоуправление) Использовал: WML-C40, WML-C20, WML-C19, LMX9820 Для реализации Вашего проекта рекомендовал бы использовать готовые USB модули. Если не устраивает дальность связи – могу разработать и изготовить мощные модули с дальностью связи -100 м за 2-3 месяца (с тестированием). Могу разработать софт. или драйвер для ПС. С уважением, Дейнека Дмитрий Санкт-Петербург ICQ: 318-817-674 E-mail: deyneka @ list.ru
  10. CAN на STM32

    Всем спасибо за отклики - все заработало: правильные настройки .......................................... // 2. Enable ext. high frequency OSC RCC_HSEConfig(RCC_HSE_ON); // wait until the HSE is ready while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // 3. Init PLL RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_4); // 100 MHz RCC_PLLCmd(ENABLE); // wait until the PLL is ready while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 4. Set system clock divders RCC_ADCCLKConfig(RCC_PCLK2_Div8); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_HCLKConfig(RCC_SYSCLK_Div1); // Flash 1 wait state *(vu32 *)0x40022000 = 0x12; // 5. Clock system from PLL RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); ............................................................................. CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_5tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_4tq; CAN_InitStructure.CAN_Prescaler = 5; Скорость = 100МГц/2/5/10 = 1 МГбит/с
  11. CAN на STM32

    Честно сказать – я все-таки не понял – связь скорости с системной частотой – почему в формуле появилась 2 : CAN_InitStructure.CAN_Prescaler = (_systemFrequency / 2 / baudRate / 9); // CAN_SJW_1tq + CAN_BS1_4tq + CAN_BS2_4tq
  12. CAN на STM32

    Все сконфигурировал как в исходниках, но не работает. Чип STM32F107, кварц 25 Мгц, Нужен 1 МГбит/c Настройки CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq; CAN_InitStructure.CAN_Prescaler = 1; Скорость = 25 МГц/(1+16+8) = 1 МГбит/c Обмена данных с проверенным мастером нет. ??? Заранее спасибо за помощь. конфигурация полностью CODE void CAN_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure CAN1 and CAN2 IOs **********************************************/ /* GPIOB, GPIOD and AFIO clocks enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOB, ENABLE); /* Configure CAN1 RX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure CAN2 RX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure CAN1 TX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure CAN2 TX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Remap CAN1 and CAN2 GPIOs */ GPIO_PinRemapConfig(GPIO_Remap2_CAN1 , ENABLE); GPIO_PinRemapConfig(GPIO_Remap_CAN2, ENABLE); /* Configure CAN1 and CAN2 **************************************************/ /* CAN1 and CAN2 Periph clocks enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1 | RCC_APB1Periph_CAN2, ENABLE); /* CAN1 and CAN2 register init */ CAN_DeInit(CAN1); CAN_DeInit(CAN2); /* Struct init*/ CAN_StructInit(&CAN_InitStructure); /* CAN1 and CAN2 cell init */ CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = DISABLE; CAN_InitStructure.CAN_AWUM = DISABLE; CAN_InitStructure.CAN_NART = DISABLE; CAN_InitStructure.CAN_RFLM = DISABLE; CAN_InitStructure.CAN_TXFP = ENABLE; CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq; CAN_InitStructure.CAN_Prescaler = 1;//2 /*Initializes the CAN1 and CAN2 */ CAN_Init(CAN1, &CAN_InitStructure); CAN_Init(CAN2, &CAN_InitStructure); /* CAN1 filter init */ CAN_FilterInitStructure.CAN_FilterNumber = 1; CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;//CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); /* CAN2 filter init */ CAN_FilterInitStructure.CAN_FilterIdHigh =0x2460; CAN_FilterInitStructure.CAN_FilterNumber = 15; CAN_FilterInit(&CAN_FilterInitStructure); /* Transmit */ TxMessage.StdId = 0x01; TxMessage.ExtId = 0x01; TxMessage.RTR = CAN_RTR_DATA; TxMessage.IDE = CAN_ID_STD; TxMessage.DLC = 8; } /** * @brief Configures the NVIC for CAN. * @param None * @retval None */ void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1; NVIC_Init(&NVIC_InitStructure); } int main() { NVIC_Config(); /* CANs configuration */ CAN_Config(); /* IT Configuration for CAN1 */ CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); /* IT Configuration for CAN2 */ CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE); while(1) { TxMessage.Data[0] = 0x55; CAN_Transmit(CAN1, &TxMessage); Delay(1000); } }
  13. Bus-off в sja1000

    Цитата(Andy Mozzhevilov @ Mar 5 2011, 10:16) For register access, two different modes have to be distinguished: · Reset mode · Operating mode. The reset mode (see Table 3, control register, bit Reset Request) is entered automatically after a hardware reset or when the controller enters the bus-off state (see Table 5, status register, bit Bus Status). The operating mode is activated by resetting of the reset request bit in the control register When the transmit error counter exceeds the limit of 255 [the bus status bit is set to logic 1 (bus-off)] the CAN controller will set the reset request bit to logic 1 (present) and an error interrupt is generated, if enabled. It will stay in this mode until the CPU clears the reset request bit. Once this is completed the CAN controller will wait the minimum protocol-defined time (128 occurrences of the bus-free signal). After that the bus status bit is cleared (bus-on), the error status bit is set to logic 0 (ok), the error counters are reset and an error interrupt is generated, if enabled. Да счетчик ошибок увеличивается и когда доходит до 255 чип вырубается и потом никак его не реанимировать, сам он не запускается.
  14. Bus-off в sja1000

    Цитата(Andy Mozzhevilov @ Mar 5 2011, 09:31) Что-то странное пишите. Если разъем выпал, CAN контроллер переходит в error-passive. Если после этого разъем вставить и появится сеть, контроллер автоматически перейдет в error-active после одной или нескольких успешных передач. В bus-off контроллер может перейти при каких-то фатальных ошибках на шине (несоответствие скоростей узлов, возможно КЗ линии или какие-то помехи в ней). Есть контроллеры, которые требуют, чтобы из bus-off их вытолкнули программно, есть такие, которые могут выходить автоматически по состоянию линии CAN. В документации на ваш контроллер почитайте по этому поводу. Это мне понятно. Вопрос именно по чипу SJA1000 - программно не получается выйтииз buss-off.
  15. Проблемы с SJA1000

    Цитата(KRS @ Sep 15 2010, 13:03) Можно связать 2 устройства, получится точка точка - общая линия RX = TX1 & TX2 По входу в прерывание надо считать Interrupt регистр для очистки. А реакция, зависит от задач. Обычно именно ERROR interrupt можно игнорировать, а обрабатывать статусы BUS OFF и ERROR PASSIVE (если нужно). Пишу драйвер под QNX4. Возникла проблема, когда сеть рвется (выпал разъем) – срабатывает прерывание и устройство входит в режим Buss-off - данные принимает, но послать ничего не может. Помогает только перегрузка ПС. Вопрос таков: Как вернуться в нормальный режим после образования сети вновь. С уважением, Дейнека Дмитрий