'[ST_MICRO]/STM32'에 해당되는 글 37건

  1. 2014.07.13 STM32 내부클럭 사용하기
  2. 2012.03.01 STM32 저렴하게 판매하는곳
  3. 2011.11.29 STM32F1과 STM32F4 핀맵 차이 (1)
  4. 2011.06.10 소형 STM32
  5. 2011.03.17 STM32 Infomation block 내부 EEPROM처럼 사용하기 (1)
[ST_MICRO]/STM322014. 7. 13. 11:39

STM32 내부클럭 사용하기

STM32 내부클럭 사용하기

보드 단가를 낮추기 위해서는 내부 오실레이터를 이용하면 좋은데 특히 STM32F100 시리즈는 저렴하기 때문에 보드 단가 측면에서 내부 오실레이터를 사용하는것이 유리하다. 


다만 디폴트가 PLL클럭의 1/2이다.

따라서 최대 64Mhz로 구동 하므로 주의가 필요 하다. (외부 8Mhz 구동시 최대 72Mhz로 구동가능하다.)

    PLLCLK = 8MHz/2 * 16 = 64 MHz 





/* PLL entry clock source */

#define RCC_PLLSource_HSI_Div2           ((u32)0x00000000)

#define RCC_PLLSource_HSE_Div1           ((u32)0x00010000)

#define RCC_PLLSource_HSE_Div2           ((u32)0x00030000)



void RCC_Configuration(void)

{

  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/   

     

  /* RCC system reset(for debug purpose) */

  RCC_DeInit();


  /* Disanable HSE */

  RCC_HSEConfig(RCC_HSE_Bypass);


  /* Wait till HSE is ready */

  HSEStartUpStatus = RCC_WaitForHSEStartUp();


  //if(HSEStartUpStatus == SUCCESS)

  {

    /* Enable Prefetch Buffer */

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);


    /* Flash 2 wait state */

    FLASH_SetLatency(FLASH_Latency_2);

 

    /* HCLK = SYSCLK */

    RCC_HCLKConfig(RCC_SYSCLK_Div1); 

  

    /* PCLK2 = HCLK */

    RCC_PCLK2Config(RCC_HCLK_Div1); 


    /* PCLK1 = HCLK/2 */

    RCC_PCLK1Config(RCC_HCLK_Div2);


    /* On STICE the PLL output clock is fixed to 72 MHz */

//    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);    //64 Mhz


    /* 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)

    {

    }


  }

}






Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM322012. 3. 1. 22:34

STM32 저렴하게 판매하는곳

STM32 저렴하게 판매하는곳

소매 쇼핑몰에서도 4000원에 판매한다.

http://toolparts.co.kr/front/php/product.php?product_no=132&main_cate_no=67&display_group=1


Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM322011. 11. 29. 21:00

STM32F1과 STM32F4 핀맵 차이

STM32F1과  STM32F4 핀맵 차이

STM32F1xx 와 STM32F4xx는 핀맵이 호환된다고 한다.
하지만 전원핀이 조금 다르다고 하는데... (왜 이렇게 만들었지?)
암튼 몇군데 손보면 옛날 PCB 그대로 사용할 수 있을것 같다.
















Posted by nexp

댓글을 달아 주세요

  1. 안졸리냐젤리

    관리자의 승인을 기다리고 있는 댓글입니다

    2014.05.31 20:34 [ ADDR : EDIT/ DEL : REPLY ]

[ST_MICRO]/STM322011. 6. 10. 17:52

소형 STM32

소형에 UART 2개 이상인 MCU를 찾다보니 저렴한 가격에 STM32가 제일 좋은것 같다.

확인해 보니 아래과 같이 추려진다.

Generic Part Number Package Operating Frequency (Processor speed) (MHz) FLASH Size (Prog) (kB) Internal RAM Size (kB) 12 or 16-bit timers (IC/OC/PWM) Serial Interface
STM32F101T4 VFQFPN 36 6x6x1-0 36 16 4 2x16-bit (8/8/8) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816)
STM32F101T6 VFQFPN 36 6x6x1-0 36 32 6 2x16-bit (8/8/8) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816)
STM32F101T8 VFQFPN 36 6x6x1-0 36 64 10 3x16-bit (12/12/12) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816)
STM32F101TB VFQFPN 36 6x6x1-0 36 128 16 3x16-bit (12/12/12) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816)
STM32F103T4 VFQFPN 36 6x6x1-0 72 16 6 3x16-bit (12/12/14) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816);USB;CAN
STM32F103T6 VFQFPN 36 6x6x1-0 72 32 10 3x16-bit (12/12/14) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816);USB;CAN
STM32F103T8 VFQFPN 36 6x6x1-0 72 64 20 4x16-bit (16/16/18) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816);USB;CAN
STM32F103TB VFQFPN 36 6x6x1-0 72 128 20 4x16-bit (16/16/18) 1xSPI;1xI2C;2xUSART(IrDa, ISO7816);USB;CAN



Posted by nexp
TAG QFN, STM32

댓글을 달아 주세요

[ST_MICRO]/STM322011. 3. 17. 21:16

STM32 Infomation block 내부 EEPROM처럼 사용하기

STM32 Infomation block EEPROM처럼 사용하기

STM32는 AVR과 달리 내부 EEPROM이 없다. 대신 내부 플래시를 EEPROM처럼 쓸 수 있다고 한다.
제작한 보드에 ID를 부여해 인식하려고 하는데.. 데이트시트를 보면 내부 영역중 Information block 이 있다.
이부분은 ST에서 제공하는 플래시 프로그램으로 제어 가능하기 때문에 PC 소프웨어 부담없이 가능할것 같다.
Option Byte 영역을 수정하여 ID를 부여해 보도록 하겠다.



Flash Loder에서 Edit Option Byte를 선택하여 수정할 수 있다.



Option Byte에서 Byte for user data storage 부분을 FF에서 EC로 변경하고 저장한다.



이제 펌웨어에서 이부분을 읽어서 ID를 처리하면 쉽게 해결된다.

#define StartAddr  ((uint32_t)0x1FFFF800)

unsigned long  Address = 0x00;

Address = StartAddr;

 for(i=0;i<16;i++)
    {
        DebugPrint("%02X: %X\r\n", i, *(vu32*)Address);
        Address += 4;
    }


STM32 User Data Read 프로그램 실행 결과
변경한 데이터 EC를 플래시 영역에서 확인 할 수 있다.
00: FF5AA5
01: FF13EC
02: FF00FF
03: FF00FF
04: FFFFFFFF
05: FFFFFFFF
06: FFFFFFFF
07: FFFFFFFF
08: FFFFFFFF
09: FFFFFFFF
0A: FFFFFFFF
0B: FFFFFFFF
0C: FFFFFFFF
0D: FFFFFFFF
0E: FFFFFFFF
0F: FFFFFFFF
Posted by nexp

댓글을 달아 주세요

  1. crecento

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.06.01 10:14 [ ADDR : EDIT/ DEL : REPLY ]