Здравейте на всички във форума. Имам проблем и ще съм много благодарен ако някой ми помогне.
Изходни данни:
Windows XP
IAR Embedded Workbench 6.40.4
Debugger:ARM-USB-OCD
Boards: STM32-H103, STM32-P103
(Schematic STM32-H103 -
https://www.olimex.com/Products/ARM/ST/ ... 03-sch.gif)
(Schematic STM32-P103 -
https://www.olimex.com/Products/ARM/ST/ ... 03-sch.gif)
MCU:STM32F103RBT6 -
http://www.st.com/web/catalog/mmc/FM141 ... 5/PF164487На горния сайт, в таба Design Resources се намира връзката към примера описан по-долу.
Datasheet -
http://www.st.com/st-web-ui/static/acti ... 161566.pdfReference Manual -
http://www.st.com/st-web-ui/static/acti ... 171190.pdfProgramming Manual -
http://www.st.com/st-web-ui/static/acti ... 228163.pdfExample: STM32 ADC modes and their applications -
http://www.st.com/web/en/catalog/tools/PF257864По отношение на примерите, със STM32-P103 съм ползвал ScanContinuous, а със STM32-H103 съответно SingleChannelContinuous.
По важни настройки на средата по подразбиране
Options->General Options->Target->Processor Variant->Device-> ST STM32F103xE
Options->Debugger->Setup->Driver->J-Link/J-Trace
Options->Debugger->Download->Use flash loader(s) (само това е отметнато)-> $TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F10xxЕ.board
По важни настройки на средата така като съм ги избрал
Options->General Options->Target->Processor Variant->Device-> ST STM32F103xB
Options->Debugger->Setup->Driver->GDB Server (със съответни настройки localhost,3333)
Options->Debugger->Download->Use flash loader(s), Verify Download, Override default .board file (само това е отметнато)-> $TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F10xxB.board
Ще се опитам да си припомня първата конфигурация която съм флашнал. Не съм напълно сигурен по отношение на това дали наистина (това важи само за STM32-P103) описаното по-долу беше най-първата конфигурация която съм флашнал.
За STM32-P103 и съответно ScanContinuous по важните промени са
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_41Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 1, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 2, ADC_SampleTime_239Cycles5);
// ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 4, ADC_SampleTime_1Cycles5);
и
/* Configure PC.01 and PC.04 (Channel11 and Channel14) as analog input -----*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;// | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
Ако се вгледате в схематика на STM32-P103 ще видите защо съм изключил 11 канал. Пълната версия на оригинала се намира в примера описан по горе (STM32 ADC modes and their applications). Тук описвам само промените които съм въвел.
За STM32-H103 и съответно SingleChannelContinuous по важните промени са
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
Този пин беше настроен с GPIO_Pin_4. Аз го промених на 5 заради USB_P (справка - Schematic STM32-H103).
Съответно трябваше да променя и
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_28Cycles5);
на ADC_Channel_15 но забравих и първата конфигурация която флашнах на STM32-H103 беше тази. Пълната версия на оригинала се намира в примера описан по горе (STM32 ADC modes and their applications). Тук описвам само промените които съм въвел.
След цялото това описание дойде ред и това какъв същност е проблема. При първото пускане всичко работи и изглежда нормално. При всяко следващо пускане се получава следното:
Debug Log
Tue Apr 09, 2013 15:52:52: Loaded macro file: F:\INSTALL\IAR Systems\Embedded Workbench 6.4 Kickstart\arm\config\flashloader\ST\FlashSTM32F10xxx.mac
Tue Apr 09, 2013 15:52:52: -I- execUserFlashInit!
Tue Apr 09, 2013 15:52:52: 456 bytes downloaded and verified (5.71 Kbytes/sec)
Tue Apr 09, 2013 15:52:52: Warning:
Verify error at address 0x20000040, target byte: 0x41, byte in file: 0x00
Tue Apr 09, 2013 15:52:52: Warning:
Verify error at address 0x20000041, target byte: 0x0E, byte in file: 0x20
Tue Apr 09, 2013 15:52:53: Fatal error: There were warnings during download of FLASH loader, see Log Window Session aborted!
Tue Apr 09, 2013 15:52:53: Failed to load flash loader: F:\INSTALL\IAR Systems\Embedded Workbench 6.4 Kickstart\arm\config\flashloader\ST\FlashSTM32F10xxxRAM16K.out
Tue Apr 09, 2013 15:52:53: Failed to load flash loader: F:\INSTALL\IAR Systems\Embedded Workbench 6.4 Kickstart\arm\config\flashloader\ST\FlashSTM32F10xxB.flash
Това е дебъг лога който получавам от STM32-H103, същото но с повече съобщения започаващи с Verify error, получавам и със STM32-P103.
Резултата от всичко това е че не мога да флашна, не мога да изтрия паметта, не мога и да дебъгвам. На практика двете платки са напълно неизползваеми.
Във макро файла се прави описание (разпределение) на паметта. Опитах да го променя така че да се заобикаля опоменатия участък 0x20000000 (bit-band областта на този процесор) и да видя дали ще има някъкъв резултат, нищо не се промени.
Направих някои промени и във файла описан в настройките на линкера $PROJ_DIR$\STM32F10x_FLASH.icf. Отново с цел да се заобиколи тази област, нищо не се промени.
Разбира се, всички тези промени ги правех в резервни копия, а не в оригиналния макро и icf файл.
Правих опити и с различни конфигурации за флашване (различни настройки на пиновете, някои от които включваха и 11 канал на АЦП). Извърших тези опити след като проблема вече беше наличен. Отново нищо не се промени.
В крайна сметка съм в задънена улица, с две неизползваеми платки, едната от които повредих преди 4-5 дена, а другата преди малко (т.е. днес). Много ще се радвам ако някой ми помогне поне да разбера къде е проблема, защо се получава така. Още по-добре ще е разбира се да се намери начин да се оправят за да не се налага да ги плащам.
Прикачения файл съдържа същото описание, но ми струва че там е по четливо.