안녕하세요. CH341 칩을 이용해서 SPI통신을 해보겠습니다.
3편에서 했던 I2C랑 마찬가지로 CH341DLL을 사용합니다.
* 하드웨어 구성
CH341에서 SPI통신을 해야하므로 1,2번핀을 연결합니다. 1,2번핀을 연결했을때랑 2,3번핀을 연결했을때 다르게 잡히는걸 확인할수있습니다.
* 프로그램 구성
SPI 파형을 보기위해 아날라이저를 연결합니다.
* CH341 통신 연결하기
OpenDevice()함수를 이용해서 연결시도를 합니다. 연결이 되었으면 true가 리턴되고 실패했으면 false가 리턴됩니다. timer도구를 이용해서 1초에한번씩 OpenDevice()를 호출하고 성공/실패에 따라 UI로 표시해줍니다.
* SPI 비트전송순서
비트전송순서를 정할수있습니다
SetStream()함수를 이용하면 LSB/MSB를 정하기가 가능합니다.
// 0 = low bit first, (LSB)
// 1 = high bit first (MSB)
* SPI 모드/클럭 설정
SPI는 CPOL/CPHA 방식이 있어서 데이터가 읽히는 방식이 총 4가지가 있습니다.
그러나 CH341은 CPOL=0, CPHA=0 고정 방식인 것 같습니다.
클럭속도도 1.5MHz로 고정 방식인 것 같습니다.
* Write/Read하기
StreamSPI4(uint iChipSelect, ref byte[] ioBuffer) 함수를 이용해서 Write/Read합니다.
iChipSelect는 CS를 정하는 핀입니다. 제가 사용하는 보드는 D0핀을 CS로 사용하므로 0x80설정을 합니다.
ioBuffer는 Wrtie할 바이트들을 배열형태로 보내면 됩니다. 그리고 Read도 StreamSPI4함수를 호출하면 ioBuffer로 Read하게 됩니다.
*프로그램테스트
프로그램은 1바이트를 WRITE하고 READ하게만 만들었습니다.
*소스코드(Commits : Add spi)
https://github.com/yhunterr/CH341_com_csharp
'각종 CHIP > CH341' 카테고리의 다른 글
CH341 칩을 이용해서 UART,I2C,SPI 통신하기 5편(보드 테스트) (0) | 2025.05.29 |
---|---|
CH341 칩을 이용해서 UART,I2C,SPI 통신하기 4편(회로도,아트웍) (0) | 2025.05.18 |
CH341 칩을 이용해서 UART,I2C,SPI 통신하기 3편(I2C) (0) | 2024.12.22 |
CH341 칩을 이용해서 UART,I2C,SPI 통신하기 2편(UART) (0) | 2024.12.08 |
CH341 칩을 이용해서 UART,I2C,SPI 통신하기 1편(기본 소개) (0) | 2024.11.23 |