Microsoft Word - STM32 BxCAN.doc

Similar documents
Install stm32cubemx and st-link utility

untitled

BY-FDP-4-70.hwp

untitled

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

IRISCard Anywhere 5

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

MicrocontrollerAcademy_Lab_ST_040709

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

CANTUS Evaluation Board Ap. Note

CAN 통신

DSP_MON 프로그램 메뉴얼

T100MD+

Microsoft Word - Armjtag_문서1.doc

MAX+plus II Getting Started - 무작정따라하기

Remote UI Guide

vRealize Automation용 VMware Remote Console - VMware

AN_0005B_UART

PowerPoint 프레젠테이션

ISP and CodeVisionAVR C Compiler.hwp

ADP-2480

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

hd1300_k_v1r2_Final_.PDF

SRC PLUS 제어기 MANUAL

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

DSP_MON 프로그램 메뉴얼

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

KEY 디바이스 드라이버

1

untitled

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

CAN-fly Quick Manual

Nordic Chipset BLE Test Application Note

슬라이드 1

untitled

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

슬라이드 제목 없음

PRO1_02E [읽기 전용]

R50_51_kor_ch1

Microsoft Word - ASG AT90CAN128 모듈.doc

인켈(국문)pdf.pdf

AN2629

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

IoT FND8 7-SEGMENT api

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

bn2019_2

untitled

Microsoft Word - How to make a ZigBee Network_kr

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - PEB08_USER_GUIDE.doc

CPX-E-EC_BES_C_ _ k1

Mango-E-Toi Board Developer Manual

Chapter #01 Subject

DVI-CL01 매뉴얼

Smart Power Scope Release Informations.pages

Studuino소프트웨어 설치

歯FDA6000COP.PDF

PRO1_09E [읽기 전용]

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

(specifications) 3 ~ 10 (introduction) 11 (storage bin) 11 (legs) 11 (important operating requirements) 11 (location selection) 12 (storage bin) 12 (i

Microsoft PowerPoint - ccs33_bios_PRD.ppt [호환 모드]

Product Brief Manual

(SW3704) Gingerbread Source Build & Working Guide

ODS-FM1

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Microsoft PowerPoint - Chapter 8_USART Serial Communication

슬라이드 1

MF5900 Series MF Driver Installation Guide

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

개요

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

슬라이드 1

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

Integ

목차 본 취급설명서의 사용법 본 사용설명서에서는 제품상에 표시된 채널명 및 버튼명, 소프트웨어의 메뉴명 등이 대괄호 ([ ]) 안에 표시됩니 (예: [MASTER] 채널, [ON/ OFF], [File] 메뉴) 시작하시기 전에 특징...3 부속품...4 시작하시기 전에


SMB_ICMP_UDP(huichang).PDF

Orcad Capture 9.x

歯A1.1함진호.ppt

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

VZ94-한글매뉴얼

airDACManualOnline_Kor.key

1.LAN의 특징과 각종 방식

BH의 아이폰 추천 어플

ARMBOOT 1

Windows Server 2012

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

歯기구학

ATmega128

Index

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

歯설명서_020925_.PDF

XDS100S V3 Entry-level JTAG Emulator. Revision XDS100S V3 ( 사용매뉴얼 ) Rev TEL , FAX , .

Transcription:

개정내역 버전개정내역일자 0.1.0 첫번째릴리즈 2011/08/29 사용된 Tool 버전 Tool IAR EWARM Kickstart Edition Version 5 또는이후버전 참고문서 번호 회사명 문서명 1 STMicroelectronics RM0008 STM32 Reference manual 2 IAR Systems EWARM_IDEGuide.ENU.pdf 3 4 5 소개 STM32 의 Peripheral 중 BxCAN 에대한이해를돕기위해작성되었습니다. 지원디바이스 STM32F103/105/107 BxCAN 을내장한 STM32 MCU 시작하기에앞서 CAN 통신에대한기초지식은있다는가정하에설명을진행합니다. yskim@saemichips.co.kr 02-2026-5140-1 -

bxcan 1. bxcan 특징 RM0008 문서에자세히나와있으나정리하자면, CAN 2.0A/B 지원 최대 1M bps 전송속도 Time triggered communication 지원 세개의 Tx Mail box 전송우선순위설정가능 Time stamp 기능 두개의 Rx FIFO ID List / ID Range Filter 설정단점으로는 STM32 Connectivity Line을제외한 F1 시리즈 STM32들은 USB와 CAN을동시에사용하지못합니다. 이유는데이터송 / 수신에사용되는 512바이트 RAM을 USB와 CAN이공유하기때문이라고합니다. CAN과 USB를동시에사용해야한다면 STM32F105/7이나 F2 시리즈의 STM32를사용하시기바랍니다. 2. bxcan Block diagram 블록은위그림에나타낸바와같이 Control/Status/Configuration 부, Tx Mailbox 부, Rx FIFO 부, Filter 부로나누어집니다. yskim@saemichips.co.kr 02-2026-5140-2 -

STM32F Connectivity Line 디바이스들의경우 CAN Slave 가추가되어있으며 Filter 와 MAC 만공유하고 다른부분은따로가지고있습니다. 그리고 Filter 개수도다른디바이스에비해 2 배로가지고있습니다. 3. CAN Bit timing 설정예제프로젝트에서는 STM32의 SYSCLK을 72Mhz, CAN Clock 36Mhz 에서 CAN 통신속도 1Mhz 일경우로설정되어있습니다. STM32의 bxcan은 APB1으로부터 Clock을공급받으므로 CAN에공급되는 Clock 주파수는 36Mhz입니다. CAN BIT TIME 1Tq 1 8Tq 1 8Tq 1 8Tq Sync Prop Segment Phase segment1 Phase segment2 TSEG1 TSEG2 Sampling point 아래사이트를참조하면 Bit Time 설정에도움이되리라생각됩니다. http://www.kvaser.com/en/support/bit timing calculator.html 4. CAN Message 전송 CAN Message 를전송하는방법은생각보다간단합니다. CAN TSR(Transmit status register) 의 TME(Transmit Mailbox Empty) bit를확인해서비어있는 Mailbox를찾은다음비어있는 Mailbox에 ID, Frame type, DLC 및데이터를셋팅하고 TX mailbox id regster의 TXRQ(Transmit Mailbox Request) bit를 SET하면설정된 Message가전송됩니다. 예제프로젝트의 can_drv.c 파일의 can_tx_msg 함수를참조바랍니다. yskim@saemichips.co.kr 02-2026-5140-3 -

CAN TX STATE MACHINE 전송우선순위 : bxcan은세개의 Tx Mailbox를가지고있으며전송의우선순위를 ID로할지아니면 Tx를요청한순서대로전송할지를선택할수있습니다. CAN MCR(Master control register) 레지스터의 TXFP(Tx Fifo priority) 비트가 1이면전송을요청한순서로 Message가전송되며 0이면 ID가낮은순서로 Message가전송됩니다. 이비트는전송을요청한순서로나가도록예제프로그램에서는설정되어있습니다. 대부분의애플리케이션에서보내는메시지가 Pending되는일은없을것입니다. 전송중지 Mailbox0의 Message 전송을중지하려면 TSR의 ABRQ0비트를 SET 합니다. Pending이나 Scheduled 상태면즉시전송이중지되며 Transmit 상태인동안에는두가지경우로나누어집니다. 만약전송이성공하면 Mailbox는 TXOK비트를 SET으로하고 Empty상태로되며전송에실패하면전송은중지되고 Scheduled상태에서 Empty상태로되며 TXOK비트는 RESET됩니다. 자동재전송 MCR레지스터의 NART(No automatic retransmission) 비트가 0이면 CAN Hardware는 Message전송이성공할때까지재전송을시도하게됩니다. Time triggered communication option이아니면자동재전송모드를선택해야합니다. 5. CAN Filter 설정 CAN은 Message를 ID단위로수신을할지아니면버릴지를 Hardware적으로결정을합니다. 이판단의기준이되는것이 Filter인데요. Filter설정에따라서 CAN Network에돌아다니는메시지를받을지버릴지를결정합니다. bxcan의 Filter는두개의 32비트레지스터로이루어져있으며네가지로셋팅할수있습니다. 아래의그림은 Filter설정을그림으로나타낸것입니다. yskim@saemichips.co.kr 02-2026-5140-4 -

그리고각 Filter마다두개의 Receive FIFO중하나를선택해서 Filter를통과한 Message를선택된 FIFO로보낼수있습니다. CAN RDTR(Receive FIFO mailbox data length control and time stamp register) 의 Filter match index field에현재 FIFO에수신된 Message의 Filter match index가들어갑니다. ID List mode ( ID Filtering mode ) Filter bank register 에 ID List 가들어가며이 ID List 와동일한 ID 를갖는 Message 는이 Filter 를통과해서 Rx FIFO 에들어갑니다. 예제소스에서 16 bit ID list mode 로 Filter 를 setting 하는부분입니다. const t_can_filter_init can_filter0 = { /* FMI 0~3 */ 0, // Filter number kcanfm_16bitidlist,// e_filt_mode kcanfa_fifo0, // kcanfa_fifo0 or kcanfa_fifo1 kmake16bitidlistvalue(0x111, kframetypedata, 0x112, kframetypedata), kmake16bitidlistvalue(0x113, kframetypedata, 0x114, kframetypedata) }; 위와같이설정하면 0x111, 0x112, 0x113, 0x114 ID가 Filter0을통과할수있습니다. ID Mask mode ( Range filtering mode ) 예를들어 0x300 ~ 0x30F 의 Message 를수신하고자할때사용하는모드입니다. 즉특정범위의 Message 를모두수신하고싶을때사용합니다. yskim@saemichips.co.kr 02-2026-5140-5 -

예제소스에서 16 bit ID mask mode로 Filter를 setting하는부분입니다. const t_can_filter_init can_filter4 = { /* FMI 0~1 */ // ID 0x61x, 0x510 ~ 0x51F까지메시지수신 // ID 0x71x, 0x520 ~ 0x52F까지메시지수신 /* FMI 28~29 */ 4, // Filter number kcanfm_16bitidmask, kcanfa_fifo1, kmake16bitidmaskvalue(0x510, 0x7F0, kframetypedata), kmake16bitidmaskvalue(0x520, 0x7F0, kframetypedata) }; ID와 Filter를설정하는방법은아래와같습니다. ID 0x510 0101,0001,0000 Mask 0x7F0 0111,1111,0000 Mask bit 가 1 이면 Must match, 0 이면 Don t care 이므로 위의적색화살표를기준으로왼쪽은 mask bit가 1이므로 ID 0x51부분과일치해야하며오른쪽은 mask bit가 0이므로 ID부분의하위 4개의비트와는무관하게 Filter를통과합니다. 이렇게해서 0x510~0x51F까지의 ID를가진 Message가 Filter를통과하게됩니다. 이모드를사용하면하나의필터로 11비트 ID 모두를수신할수도있습니다. 그러나이렇게 Range filtering을사용하면 Message가수신될때 Software에서 ID를모두확인해서 Message버퍼에저장해야하기때문에 CPU 로드가발생합니다. 수신할 ID가많아서 Filter가모자랄경우가아니면사용하는것을권장하지않습니다. Filter match Index 각 FIFO의 RDTR에는 Filter match index field가있습니다. 이는수신된 Message가어떤 filter 를통과했는지를나타내주는 Index 입니다. Filter의 mode에따라서 Filter에번호가붙게되는데아래그림과같습니다. 아래그림에서 Filter bank는 Filter Register번호이며 Filter Num이 FMI Field에들어가는 index 번호입니다. Message가수신되면 ID를비교하지않고 FMI를확인해서 Message 버퍼에저장할수있어서 ID를비교하는것보다빠릅니다. yskim@saemichips.co.kr 02-2026-5140-6 -

예제프로젝트에서는 FIFO0 는 ID List 모드로설정되는필터를할당했으며 FIFO1 에는 ID Mask 모드 로설정되는필터를할당했습니다. 그러나꼭그럴필요는없으며위그림과같이혼합해서할당해 도문제는없습니다. Filter start bank STM32F105/7 디바이스와같이 CAN이 2개인디바이스에해당됩니다. Filter start bank에 Filter Register number가들어가야하며이번호이후의필터는 CAN2에할당됩니다. Reset value는 14이므로변경을하지않으면 14번 ~27번까지의 Filter가 CAN2에할당됩니다. 6. CAN Message 수신 Filter설정을잘했다면 Network에돌아다니는 Message를수신하는방법은쉽습니다. 수신인터럽트를활성화해놓으면돌아다니는 Message가 Filter를통과하고자동으로 FIFO에 ID, DLC등의데이터가저장된후인터럽트가발생합니다.. 그러므로수신인터럽트가발생하면어떤 FIFO가 Interrupt를발생시켰는지확인후 FIFO에저장된 Message data를가져오면됩니다. CAN Rx 인터럽트는 FIFO0, FIFO1각각할당되어있습니다. 먼저 RX state machine 을살펴보겠습니다. yskim@saemichips.co.kr 02-2026-5140-7 -

위 state machine 에서 Valid message 는 Filter 를통과한 message 입니다. Receive FIFO0, 1 에는각각 3 개의 Mailbox 를가지고있습니다. PENDING : EMPTY상태에서 Message가 Filter를통과하면 RFxR(x=0 or 1) register의 FMP field가하나씩증가하며 PENDING상태가됩니다.Mailbox의 Message를저장하고 RFxR의 RFOMx(Release FIFOx Output Mailbox) 비트를 Set하면 FMP field가하나씩감소합니다. 수신된 Message모두저장하고 mailbox를모두 Release시키면 EMPTY상태가됩니다. OVERRUN : Mailbox를 release하지않고 4번째 Message가수신되면 Overrun상태 (Receive FIFOx Register의 FOVRx bit가 Set됨 ) 가됩니다. Overrun 상태에서계속 Message가수신되면 MCR(Master Control Register)register 의 RFLM 비트의상태에따라두가지로동작합니다. RFLM = 0 : 4번째수신된 Message를 Overwrite합니다. RFLM = 1 : 4번째수신된 Message를버립니다. 세번째까지받은메시지유지합니다. CAN Rx Interrupt Interrupt Enable/Disable은 IER(Interrupt Enable Register) 의 Enable bit를통해서할수있습니다. FIFO mailbox에 Message가수신되었을때 Interrupt가발생되게하려면 FMPIEx 비트를 SET하면됩니 yskim@saemichips.co.kr 02-2026-5140-8 -

다. 그리고소프트웨어에서 void CAN1_RX0_IRQHandler(void) 함수를추가하고코딩을하면됩니다. 자 세한내용은예제프로젝트를참조하세요. 예제프로젝트 프로젝트폴더구조및설명예제프로젝트에는 Data frame/remote frame에대한예제및 ID List/ID Mask에대한 Tx/Rx예제가있습니다. 예제프로젝트에서는 Remote frame을수신하면그에해당하는자신의 Message를 Data frame으로보냅니다. 소스코드에대한설명은주석으로대체합니다. 프로젝트의압축파일을풀면아래의그림과같은트리로구성되어있음을확인할수있습니다. Application : CAN Test 소스파일및프로젝트파일등이있습니다. BootLoader : USART통신으로펌웨어를업그레이드할수있는부트로더프로젝트폴더입니다. EWARMv5.4 : EWARM ver5.4용 Workspace파일이있는폴더입니다. EWARMv6.1 : EWARM ver6.1용 Workspace파일이있는폴더입니다. Libraries : STMicroelectronics에서제공하는라이브러리파일이있는폴더입니다. Uploader_win : Windows 응용프로그램이있는폴더입니다. Utility : STM32 C 소스파일이있는폴더입니다. 본예제프로젝트는 2 가지방법으로테스트를할수있습니다. 첫째두개의 STM3210B_EVAL 보드또 는 STM3210E_EVAL 보드를사용하는방법과하나의 STM3210C_EVAL 를사용하는방법이있습니다. 두개의 STM3210E_EVAL 보드또는 STM3210B_EVAL 보드를사용하는방법 1) [ STM32_CSP_CAN v1.x ]\EWARMv5.4 폴더에서 bl_can_app_ewarm v5.4.eww 을엽니다. yskim@saemichips.co.kr 02-2026-5140-9 -

2) Configuration drop down 메뉴에서 STM32F10X_MD 또는 STM32F10X_MD_NOBOOT 를선택합니다. 차이는부트로더를사용여부이며 CAN 테스트에서는 Bootloader 는상관이없으므로 STM32F10X_MD_NOBOOT 를선택하십시오. 3) 둘중의하나의타켓보드에 J LINK 나 ST LINK 를사용해서펌웨어를업로드합니다. 4) [ STM32_CSP_CAN v1.x ]\EWARMv6.1 폴더에서 boot_can_appl_ewarm_project.eww Workspace 파일을엽니다. 5) Configuration drop down 메뉴에서 STM32F10X_MD_HD_NoBL 을선택한후프로젝트를빌드하고 다른하나의보드에펌웨어를업로드합니다. 디버깅상태에서통신이잘되는지 Watch 창을통해 서 st_can1_rx_msg0, st_can1_rx_msg1 을확인합니다. STM3210C_EVAL 보드를사용해서 CAN1,CAN2 로서로통신하는방법 1) [ STM32_CSP_CAN v1.x ]\EWARMv6.1 폴더에서 boot_can_appl_ewarm_project.eww Workspace yskim@saemichips.co.kr 02-2026-5140-10 -

파일을엽니다. 2) Configuration drop down 메뉴에서 STM32F10X_CL_NoBL 을선택합니다. 3) 프로젝트를빌드하고펌웨어를업로드한후디버그상태에서 Watch 창을통해서 st_can1_rx_msg0, st_can1_rx_msg1 을확인합니다. yskim@saemichips.co.kr 02-2026-5140-11 -

1 라인으로 Transceiver 없이통신하기 STM32 의 GPIO pin mode 중에 Alternate Function open drain mode 덕분에 1 라인 CAN 통신이가능합 니다. 타회사의 MCU 도 Open drain 설정이있으면될것으로생각됩니다. 일반적으로 CAN통신에는 SN65HVD230과같은 CAN Transceiver가필요합니다만 Board내에서 MCU끼리통신한다거나비교적노이즈가없는환경에서가까운거리의통신이라면 Transceiver가없어도 CAN 통신이가능합니다. CAN Transceiver를사용하는경우라면 CAN Tx pin은 Alternate Function push pull로설정을합니다만, 1라인통신을위해서는 Alternate Function open drain 으로설정하고아래의그림과같이 MCU끼리연결을하면통신이가능합니다 3.3V 680 STM32_1 STM32_2 Other CAN MCU 1 Other CAN MCU n Tx와 Rx사이의연결저항은 100K옴정도를사용. CAN BUS LINE의 Pull up저항은거리가멀수록작아야하나 GPIO Pin의구동전류도생각해야하므로실험을통해서에러가나지않는범위내에서정하면됩니다. yskim@saemichips.co.kr 02-2026-5140-12 -