Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꼬부기의 끄적끄적

MoonWalker MW-AHRSv1 CAN으로 사용하기 본문

카테고리 없음

MoonWalker MW-AHRSv1 CAN으로 사용하기

Koboogy 2016. 4. 30. 18:23

MW-AHRSv1 이라는 제품은 CAN 통신을 통해 사용할 수 있습니다.


출처:  https://www.devicemart.co.kr/1310790




MCU등을 위한 C기반 소스 코드는 github에서 다운로드 가능합니다.

git 주소: https://github.com/psh117/MW-AHRSv1




사용법은 코드를 다운로드 받은 뒤, 프로젝트에 포함시키면 됩니다.



1. 구조체

MW_AHRS 라는 구조체는 MW-AHRSv1과 교환 가능한 데이터들을 모아두고 있습니다.



구조체 맴버 중

가속도, 각속도, 오일러각, 지자기등은 그냥 사용하시면 됩니다.

raw_data는 debug할 때만 사용하시면 됩니다.

can_read_data는 CAN Device로 부터 수신받은 8바이트의 데이터를 복사해 주시면 됩니다.

can_write_data 실제 CAN Device (MCU나 DSP에서 구현된 장치)를 통해 8바이트를 전송하시면 됩니다.



2. 함수

void mw_ahrs_input_data(MW_AHRS *dst);
CAN으로부터 데이터가 수신됐을 때, can_read_data에 8바이트의 데이터를 복사한 뒤 이 함수를 호출하면 데이터를 해석하여 가공합니다.


void mw_ahrs_set_data_type(MW_AHRS *dst, uint8_t acc, uint8_t gyro, uint8_t angle, uint8_t mangetic);

수신 받고싶은 데이터를 선택하여 can_write_data에 프로토콜을 만들어 냅니다.

사용은 1, 사용을 원치 않으면 0을 넣으면 됩니다.

이 함수 호출 후, can_write_data에 저장된 8바이트의 데이터를 CAN Driver로 보내면 됩니다.



void mw_ahrs_set_period(MW_AHRS *dst, uint32_t time);

MW-AHRSv1의 데이터 전송 주기를 설정합니다. time은 ms 단위입니다.

이 함수 호출 후, can_write_data에 저장된 8바이트의 데이터를 CAN Driver로 보내면 됩니다.


3. 사용법 예제

공사중


void CAN_RX_INTERRUPT()

{

     ...

     memcpy(can_recv_data, 
}



2016 졸업작품 소스코드 예제:

https://github.com/psh117/Jack-Spherobot/blob/master/jack-spherobot/Sources/main.c