본문 바로가기

myGyro300SPI7

myGyro300SPI 3개 연결하기 또다시 반년만에 이어지는 글;; 이번에 다룰 내용은 하나의 SPI 버스에 여러개의 장치를 연결한 경우 인터페이싱 하는 방법에 관한 것이다. 간단한 구성을 설정하고 예를 들어 설명하는 것이 보다 직관적일 듯 하여 myGyro300SPI 3개를 동시에 연결한 경우를 예로 살펴보려 한다. myGyro300SPI는 1축 자이로 센서이므로 서로 직교하도록 3개의 센서를 연결해 사용하려는 생각을 쉽게 할 수 있다. 아날로그 회로라면 ADC 3채널을 할당해서 쓰면 되는 것이고, SPI라면 CS만 3개 할당해서 쓰면 된다. 그렇다!. SPI 버스는 공유할 수 있으므로 하나만 가지고 같이 사용하면 된다. 2008/07/17 - SPI 버스 위 페이지의 그림을 살펴보자. 첫번째 그림은 가장 기본적인 1:1 연결. 두번째 .. 2010. 7. 12.
myGyro300SPI에서 결과값 읽기 이전 글(2009/12/17 - myGyro300SPI의 명령)에서 마지막 소스 코드 역시 잘못된 것이라고 말했었다. 그 이유는 ADIS16100의 출력 데이타 형식 때문이다. 다시 ADIS16100 데이타쉬트를 살펴보자. 12페이지 하단의 figure 22를 보면 출력 데이타 형식을 볼 수 있다. DOUT의 15,14비트는 항상 0이다. 또한 ADD1, ADD0는 이전 글에서 설명했었던 command word에 있었던 ADD1, ADD0와 동일하게, 즉 ADC하기 위해 선택했던 채널 주소가 들어있다. 물론 이 주소는 이전 프레임에서 선택한 채널의 주소다(성질급한 조교) 예를 들어 이전 프레임에서 "gyro 값을 읽어"라고 0x8300 명령을 내렸다면 이번 프레임의 출력 값 15:12 비트에는 0000b.. 2009. 12. 20.
myGyro300SPI의 명령 myGyro300SPI에 어떤 커맨드를 내리는 작업은 SPI 인터페이스를 통해 이루어진다. MCU에서 SPI의 MOSI 핀을 통해 명령을 내리는 것이다. 이번에는 이 커맨드에 관해 살펴보자. myGyro300SPI의 명령은 ADIS16100 데이터쉬트의 12페이지 Control Register에 자세히 설명되어 있다. 커맨드는 12bit 길이를 가지고 있어서 16bit의 SPI frame 중 앞쪽 12비트만 사용한다. 커맨드 구조는 13페이지 Table 5에 잘 설명되어 있다. 중요한 것은 15,11,10, 4번 비트 뿐이다. 혹시 모르는 사람을 위해...D/C는 Don't Care의 약자다. 즉 0이든 1이든 상관없다는 뜻. 15번 비트에 0을 주면 뒤에 따라오는 모든 DIN 비트는 무시한다. 무언가 .. 2009. 12. 17.
SPI 통신 - myCortex 프로세서 보드 myCortex 시리즈에 사용된 Luminary micro LM3S 칩셋에는 모델에 따라 1개 혹은 2개의 SPI peripheral이 내장되어있다. 많이 사용되는 myCortex-LM8962에는 1개의 SPI가 내장되어 있다. myGyro300SPI를 myCortex-LM8962와 연결하여 SPI 통신을 하는 방법에 대해 자세히 살펴보자. 우선 LM3S8962에 내장된 SPI peirpheral에 대해 살펴보자. (편의상 LM3S8962를 기준으로 설명하지만 myCortex-LM308/608/808에서 사용된 LM3S308/608/808 칩에도 동일한 SPI peripheral이 내장되어 있으므로 동일하게 적용된다.) LM3S8962 데이터쉬트에서 14장 Synchronous Serial Interfa.. 2009. 8. 25.