SPI통신 > LS7366 SPI-GPIO 데이터시트로 코드 만들기

TODAY361 TOTAL207,796
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU 후원업체 최신 정보

BASIC4MCU | SPI통신 | LS7366 SPI-GPIO 데이터시트로 코드 만들기

페이지 정보

작성자 키트 작성일2017-09-01 10:31 조회151회 댓글0건

첨부파일

본문

	

첨부파일(2)

3660040649_GTyqDe9Z_ls7366_spi-gpio_ekit.jpg3Ftype3Dw740

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
위 그림은 첨부 파일로도 올려져 있습니다.
 
#define LS7366_SS   PORTA.0
#define LS7366_SCK  PORTA.1
#define LS7366_MOSI PORTA.2
#define LS7366_MISO PINA.3
 
void SPI_WR(unsigned char data){
    int i;
    LS7366_SS=0; delay_us(1);
    for(i=0;i<8;i++){
        if(data&(0x80>>i))LS7366_MOSI=1// data=1
        else              LS7366_MOSI=0// data=0
        delay_us(1); LS7366_SCK=1; delay_us(1); LS7366_SCK=0// sck
    }
    delay_us(1); LS7366_SS=1;
}
 
unsigned char SPI_RD(void){
    unsigned char data=0;
    int i;
    LS7366_SS=0; delay_us(1);
    for(i=0;i<8;i++){
        delay_us(1);
        if(LS7366_MISO)data|=0x80>>i; // data
        LS7366_SCK=1; delay_us(1); LS7366_SCK=0// sck
    }
    delay_us(1); LS7366_SS=1;
    return data;
}
 
딜레이타임은 데이터시트에 나온 값보다 넉넉하게 준 것입니다.
 
 
//---------------------------------
 
그림 3의 모양으로 함수를 만들면
 
 
#define LS7366_SS   PORTA.0
#define LS7366_SCK  PORTA.1
#define LS7366_MOSI PORTA.2
#define LS7366_MISO PINA.3
 
void SPI_WR(unsigned char data){
    int i;
    for(i=0;i<8;i++){
        if(data&(0x80>>i))LS7366_MOSI=1// data=1
        else              LS7366_MOSI=0// data=0
        delay_us(1); LS7366_SCK=1; delay_us(1); LS7366_SCK=0// sck
    }
}
 
unsigned char SPI_RD(void){
    unsigned char data=0;
    int i;
    for(i=0;i<8;i++){
        delay_us(1);
        if(LS7366_MISO)data|=0x80>>i; // data
        LS7366_SCK=1; delay_us(1); LS7366_SCK=0// sck
    }
    return data;
}
 
void WR_MDR(unsigned char data){
    LS7366_SS=0; delay_us(1);
    SPI_WR(0x90);
    SPI_WR(data);
    delay_us(1); LS7366_SS=1;
}
 
unsigned char RD_MDR(void){
    unsigned char data;
    LS7366_SS=0; delay_us(1);
    SPI_WR(0x50);
    data=SPI_RD();
    delay_us(1); LS7366_SS=1;
    return data;
}
 
unsigned char RD_MDR_CLR(void){
    unsigned char data;
    LS7366_SS=0; delay_us(1);
    SPI_WR(0x50);
    data=SPI_RD();
    SPI_WR(0x30);
    delay_us(1); LS7366_SS=1;
    return data;
}
 
 //----------------
 
데이터시트보고 만들어본 것이니
디버깅은  직접 해보세요
 
cs

댓글 0

조회수 151

등록된 댓글이 없습니다.

SPI통신HOME > 통신 > SPI통신 목록

게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017