, , . ̳ , , ' , - (, , - () ).
- , , , , . ̳ -, . ̳ , . , , ᒺ , , , , . , , .
1.
ֳ: () .
: , 12 . .
: .
: , .
: .
:
STM32 VL DISCOVERY - ST STM32F100RB ( 1.1)
1.1 - STM32 VL DISCOVERY
USB-USART FTDI FT232RL , 璺 USB-USART ( 1.2)
1.2 - USB-USART
MS Visual Studio 2008 C# - 璺 USART ;
IAR Embedded Workbench () ++.
2. ϳ
- . - , , .
|
|
- , .
' .
- (), , .
- .
- , . , , , . .
ϳ :
: , ;
;
.
:
: STM32F105;
24 : 8;
12 : 16;
2.0 - 3.6 .
, , , 24 , 12 . 2.1 .
2.1
3.
. , , , .
( 3.1).
3.1 -
, 璺 USART . , , , ' , .
-
3.1.
:
1) ();
2) .
г , 100% .
|
|
STMicroelectronics. STMicroelectronics - , .
' . , .
.
' .
̳ , . USART.
' . ( 3.2).
3.2 -
3.2. ³ STM32 VL DISCOVERY
STMicroelectronics (ST) STM32 VL DISCOVERY.
STM32 VL DISCOVERY STM32F100, STM32 Value Line. : IAR, Keil, Atollic.
64- LQFP 24 . , , , .
/ ST-Link, .
STM32VLDISCOVERY:
STM32F100RBT6B:
32- Cortex-M3, 24 ;
Flash- 128 ;
RAM 8 ;
;
;
:
2 × SPI, 2 × I2C, 3 × USART;
16- 12- ;
12- ;
2.0 3.6 .
:
USB ;
;
, RESET
璿 / , [1].
3.1
STM32 VL DISCOVERY.
3.1
12/31/47/63 | GND | - | Vss | ||
- | NC | - | - | ||
3V3 | - | - | |||
VBAT | S | VBAT | |||
PC13 | I/O | Port C13 | TAMPER-RTC | ||
PC14 | I/O | Port C14 | OSC32_IN | ||
PC15 | I/O | Port C15 | OSC32_OUT | ||
PD0 | I/O | OSC_IN | |||
PD1 | I/O | OSC_OUT | |||
NRST | I/O | RESET | |||
PC0 | I/O | Port C0 | ADC1_IN10 | ||
PC1 | I/O | Port C1 | ADC1_IN11 | ||
PC2 | I/O | Port C2 | ADC1_IN12 | ||
PC3 | I/O | Port C3 | ADC1_IN13 | ||
PA0 | I/O | Port A0 | WKUP / USART2_CTS/ ADC1_IN0 / TIM2_CH1_ETR | ||
PA1 | I/O | Port A1 | USART2_RTS ADC1_IN1 / TIM2_CH2 | ||
PA2 | I/O | Port A2 | USART2_TX/ ADC1_IN2 / TIM2_CH3/ TIM15_CH1 | ||
PA3 | I/O | Port A3 | USART2_RX/ ADC1_IN3 / TIM2_CH4 / TIM15_CH2 | ||
PA4 | I/O | Port A4 | SPI1_NSS/ ADC1_IN4 USART2_CK / DAC1_OUT | ||
PA5 | I/O | Port A5 | SPI1_SCK/ ADC1_IN5 / DAC2_OUT |
|
|
3.1 ()
PA6 | I/O | Port A6 | SPI1_MISO/ ADC1_IN6 / TIM3_CH1 | ||
PA7 | I/O | Port A7 | SPI1_MOSI ADC1_IN7 / TIM3_CH2 | ||
PC4 | I/O | Port C4 | ADC1_IN14 | ||
PC5 | I/O | Port C5 | ADC1_IN15 | ||
PB0 | I/O | Port B0 | ADC1_IN8/ TIM3_CH3 | ||
PB1 | I/O | Port B1 | ADC1_IN9/ TIM3_CH4 | ||
PB2 | I/O | Port B2 / BOOT1 | |||
GND |
, STM32F100, STM32F105, , ᒺ STM32F100, , 32 Cortex-M3, , , . , STM32 VL DISCOVERY , [2].
3.3. IAR Embedded Workbench for ARM
IAR Embedded Workbench for ARM ( 3.3) ARM C, C++ . IAR ARM . , C++, , , . , .
:
;
C / C + +;
.
C, C ++:
;
ANSI C;
ARM-.
3.3 IAR Embedded Workbench for ARM
:
C, C + + ;
;
CODE, DATA, EEPROM / .
ϳ : ARM7 (ARM7TDMI, ARM7TDMI-S, ARM720T), ARM7E (ARM7EJ-S), ARM9 (ARM9TDMI, ARM920T, ARM922T, ARM940T), 9 ARM926EJ-S, ARM946E-S, ARM966E-S, ARM968E-S), ARM10E (ARM1020E, ARM1022E), ARM11, SecurCore (SC000, SC100, SC110, SC200, SC210, SC300), Cortex-M1, Cortex-M3, Cortex-R4, Cortex-M0, Cortex-M4, Xscale.
IAR Embedded Workbench for ARM, Keil Atollic.
3.4. CMSIS
CMSIS (Cortex Microcontroller Software Interface Standard). CMSIS Cortex-M3 . . ARM Cortex . ARM , , , ++ CMSIS. , Cortex M3 , , CMSIS .
|
|
:
Cortex M3:
core_cm3.c;
core_cm3.h.
( ), CMSIS www.st.com, STM32F100RB CMSIS http://www.st.com/internet/mcu/product/164499.jsp. :
stm32f10x.h , . .
system_stm32f10x.c CMSIS. (SystemInit, SystemCoreClockUpdate, SystemCoreClock), . CMSIS M3 ;
system_stm32f10x.h CMSIS [3].
CMSIS , . IAR, CMSIS. STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\CoreSupport core_cm3.c, IAR , , CMSIS core_cm3.c. STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template\system_stm32f10x.c.
, CMSIS src src\CMSIS. , inc stm32f10x.h system_stm32f10x.h STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\ CMSIS\CM3\DeviceSupport\ST\STM32F10x core_cm3.h STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\CoreSupport. . , , startup, startup_stm32f10x_md_vl.s STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ ST\STM32F10x\startup\iar .
. , , SystemInit() CMSIS main() [4]. , ( 3.4)
3.4 CMSIS
3.5. Standard Peripherals Library
Standard Peripherals Library.
Standard Peripherals Library ST Microelectronics . , , , .
, 3.4.0 15 2010.
, . , , / , .. .chm. , . , . Standard Peripherals Library :
, ;
, , ;
, , .
:
|
|
( , );
3.6. -
- () , ( ). (- ). , , [5].
, . . , , 256 (0..255), 8 , 28 = 256. 12 , , 4096 (0..4095).
, , . , , .
:
ij = 0 10 ;
12 : 212 = 4096 ;
: 10/4096 = 0.00244 = 2.44 .
/ . , . (effective number of bits ENOB), , . , . / 6 .
3.7. STM32
, STM32 - . , 2.4 3.6. () 璺 , . 12- 1. 18 , 16 . [6].
3.5 12-
( 3.6). 8 1.5 239.5 .
3.6
Standard Peripherals Library , ST Microelectronics. :
ADC_InitTypeDef :
ADC_ContinuousConvMode : , ENABLED / DISABLED;
ADC_DataAlign ;
ADC_Mode ;
ADC_NbrOfChannel ;
ADC_ScanConvMode
:
void ADC_StructInit(ADC_InitTypeDef * ADC_InitStructure) ;
void ADC_Init(ADC1, &ADC_InitStructure) 1 ;
void ADC_TempSensorVrefintCmd(ENABLE) 17 , 䒺 ;
void ADC_Cmd(ADC1, ENABLE) .
3.8. USART
USART ( - - ()) . USART . USART SPI SPI.
. . USART , , - . ϳ , . . , . , ( ).
, , . . STM32 3 , , . 4.5 /. , .. (8 9 ), -, . APB2, 72 . 36- APB1.
. , - . , () . , . , Tx ( 3.7). , , CTS RTS.
3.7 -
, . - (), SPI- , 3- ( 3.8). , SPI . , - SPI .
3.8 SPI
USART Standard Peripherals Library , ST Microelectronics. :
void USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef * USART_InitStructure) USARTx (USART1, USART2, USART3) USART_InitStruct .
void USART_Cmd(USART_TypeDef * USARTx, ENABLE) USARTx;
void USART_SendData(USARTy, One_byte) USARTy , One_byte, ;
uint16_t USART_ReceiveData(USARTy) USARTy;
FlagStatus USART_GetFlagStatus(USARTy, USART_FLAG_TC) USARTy;
FlagStatus USART_GetFlagStatus(USARTy, USART_FLAG_RXNE) USARTy.
USART_InitStruct :
USART_BaudRate ;
USART_HardwareFlowControl . ;
USART_Mode ;
USART_Parity / . .
USART_StopBits . . , . , .
USART_WordLength . 8 9 .
3.9. ǒ
璺 USB-USART ( 3.9). USB , COM , .
3.9 USB-USART
USB-USART FT232R . , , ( 3.10).
3.10 USB-USART
COM (RS-232 ), USB. MAX232. RS-232 UART ( ), 10-12 5, . MAX232 ( 3.11).
3.11 RS-232-USART
璺 - ( 3.12).
3.12 ǒ
ϳ 璺 , , .
4.
4.1.
, , IAR Embedded Workbench [8].
, , int main(void) void InitAll(void), void InitGPIO(void), void InitUSART(void), void InitADC(void), , - , - - () - . .
void InitGPIO(void) - . - . A E 5. , . ϳ , . 32- . 64- . ֳ 64 4- , -. , 4- 2- 2- . , : , :
, , ;
, , , . : 2, 10 50 .
- , , ѻ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE). ϳ GPIO_InitStructure GPIO_InitTypeDef. , PC9 PC8 . 䒺 . , , . GPIO_InitTypeDef :
GPIO_Pin . ֳ , GPIO_Pin_6, GPIO_Pin_All;
GPIO_Speed . GPIO_Speed_2MHz, GPIO_Speed_10MHz, GPIO_Speed_50MHz, 2, 10, 50;
GPIO_Mode /.
GPIO_InitStructure :
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP.
GPIO_Init(GPIOC, &GPIO_InitStructure), , , .
USART ADC , , GPIO_InitTypeDef.
ѻ , - 15 :
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = (GPIOSpeed_TypeDef)0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init (GPIOC, &GPIO_InitStructure).
Tx, Rx USART1 . Tx :
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - 9 . Transmitted Data (Tx), , .
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure).
Rx , , Tx , :
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure).
ϳ - . USART ADC .
InitUSART(void) USART1 USB-USART . ϳ , 䒺 USART , , . (NVIC) Cortex. NVIC_InitStructure NVIC_InitTypeDef, USART1 . :
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure) . ϳ , USART1 :
USART_BaudRate = 115200; - 256000 ;
USART_WordLength = USART_WordLength_8b; - 8 ;
USART_StopBits = USART_StopBits_1; - ;
USART_Parity = USART_Parity_No; - ;
USART_HardwareFlowControl = USART_HardwareFlowControl_None; - ;
USART_Mode = USART_Mode_Rx | USART_Mode_Tx; - USART . , , .
USART_Init(USART1, &USART_InitStructure), USART_InitStructure USART1.
ϳ , void USART1_IRQHandler (void) ( 4.1), , USART_GetITStatus(USART1, USART_IT_RXNE) SET , , USART_GetITStatus(USART1, USART_IT_TXE) SET, .
4.1
InitADC(void) 12 - . PC5 PB0 . 䒺 . ϳ , ADC_InitStructure . ADC_TempSensorVrefintCmd(ENABLE) 17 , 䒺 . ADC_InitStructure:
ADC_Mode = ADC_Mode_Independent;
ADC_ScanConvMode = DISABLE;
ADC_ContinuousConvMode = DISABLE;
ADC_ExternalTrigConv=DC_ExternalTrigConv_None;
DataAlign = ADC_DataAlign_Right;
ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure) - . ADC_Cmd(ADC1, ENABLE).
ϳ , , while(1){}, , , PC9 PC8 , . GPIO_SetBits(GPIOC, GPIO_Pin_9), GPIOC , GPIO_Pin_9 9 , GPIO_ResetBits(GPIOC, GPIO_Pin_9). , , , delay_ms(20), 20 .
, GetADC1Channel(ADC_Channel_15) 15 , 4095 ( 12 ) 3.3 ( , ) 15 .
, GetADC1Channel(ADC_Channel_8) 8 GetADC1Channel17(ADC_Channel_16) 16, ( 4.2).
4.2
, USART1 void USART1_IRQHandler(void), USART_ReceiveData(USART1) . , 1, 2, 3 USART , .
4.2.
MS Visual Studio 2008.NET Visual C# [9].
SerialPort. . - , , . , ᒺ Stream, BaseStream, , . 4.1 . 4.2 [7].
SerialPort : ASCIIEncoding, UTF8Encoding, UnicodeEncoding, UTF32Encoding, - , mscorlib.dll.
4.1 System.IO.Ports.SerialPort
BaudRate | ( ). |
BytesToRead | , . |
4.1 ()
BytesToWrite | , . |
DataBits | . |
Encoding | . |
IsOpen | , ᒺ SerialPort . |
Parity | . |
PortName | , , - COM. |
ReadBufferSize | SerialPort. |
ReadTimeout | . |
StopBits | . |
WriteTimeout | . |
4.2 System.IO.Ports.SerialPort
Close | 璺 , IsOpen false ᒺ Stream. |
Open | ³ 璺 . |
GetPortNames | . |
Read(Byte[], Int32, Int32) | SerialPort , . |
4.2 ()
ReadByte | SerialPort . |
Write(String) | . |
Write(Byte[], Int32, Int32) | , . |
ϳ ᒺ sp , :
BaudRate ( ), 115200;
StopBits ( ), 1 ;
PortName , ;
DataBits 8;
Parity .
ϳ ᒺ Open(), Close().
ᒺ trd Thread. , 璺 ϳ. , sp.WriteLine(Command), Command : 1, 2, 3 ( 4.3).
1, ADC1_IN15 , .
2, ADC1_IN8 , .
4.3
3, ADC1_IN16 , .
.
ϳ , Thread.Sleep(TimerInterval) TimerInterval , . . .
ϳ sp.ReadExisting(). strgetV, strgetT1, strgetT2 . .
DrawGraphics . Graphics. Graphics , . , , , ᒺ Graphics. ᒺ Graphics .
.
1. ᒺ Graphics.
2. ᒺ Graphics , .
ϳ ᒺ Graphics , . ᒺ, ᒺ Graphics.
Pen , ᒺ.
Brush , , .
Font , .
Color [10].
ᒺ: obj1, obj2, obj3 DrawGraphics. ᒺ ᒺ PictureBox .
TimerDraw Draw(float new_y) obj1, obj2, obj3 new_y ( 4.4).
4.4
Access 2002 2003, BDAddapter. , TimerWriteToBD, . . AddToLog(string sensor_id, DateTime date, string value) BDAddapter, , .
5.
5.1. ϳ
:
璺 USB-USART STM32 VL DISCOVERY USART . USART1 STM32 VL DISCOVERY PA9 (USART1_TX) PA10 (USART1_RX);
ϳ . PC5 (ADC1_IN15) PB0 (ADC1_IN8) ;
ϳ USB-USART USB , . .
ϳ STM32 VL DISCOVERY USB , . .
5.2.
UART.exe ( 5.1)
5.1
ϳ USART 璺 , USB USART ( 5.2)
5.2 璺
115200 ʻ.
, History > ( 5.3)
5.3
³ Ļ ( 5.4).
5.4 ³ Ļ
. History.
ϳ . , .
: , 1, 2 ().
0 3.3 , 100 ( 5.5).
1 , .
2 , . ( 5.6).
5.5
5.6
, Access 2002 2003, Log_telemetry.mdb. Microsoft Office Access ( 5.7).
5.7 ³
main : id_sensor, DateTime_, value_.
³: id_sensor value_ DateTime_.
' #, USART , , IAR Embedded Workbench. ' USB-UART . ̳ - , . , : , , .
1. ST Microelectronics STM32 VL DISCOVERY [ ]. : http://www.rlocman.ru/op/tovar.html?di=66950&/STM32VLDISCOVERY
2. ST Microelectronics STM32F 32-bit MCUs [ ]. : http://www.st.com/internet/mcu/subclass/ 1169.jsp
3. CMSIS Standard Peripherals LibraryPrint [ ]. : http://easyelectronics.ru/ arm-uchebnyj-kurs-keil-cmsis-sozdanie-proekta.html
4. CMSIS[ ]. : http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta-chast-2-cmsis-i-standard-peripherals-library.html
5. Silicon Laboratories (SiLabs) - ? [ ]. : http://www.efo.ru/Silabs.pl
6. - ϔ[ ]. : http://www.gaw.ru/html.cgi/txt/doc/micros/ arm/cortex_arh/5_1_3.htm
7. MSDN SerialPort - [ ]. : http://msdn.microsoft.com/ru-ru/library/system.io.serialport. aspx
8. ., . . // .: , 2007. 304 .
9. .., .. Visual C# 2010: . // .: , 2010. 696 .
10. C# 2010: . // .: , 2010. 592 .