|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ ?2 `6 P0 q+ \6 \: _/ B5 ?$ Qvoid PSCInit(void)
Z' u( \0 j' M- Q. u6 K{5 j4 g9 e) y) |- ]
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 P7 r0 T# K7 X2 I: z
}
( P1 C: I2 A1 V1 u$ Q- l! {: R0 E3 S1 V* d
void GPIOBankPinMuxSet(void)6 t+ A) B. |7 G$ d! X
{3 L; }+ V' G1 V2 X- ^ I
// DRDY ------------ GPIO6[14] -- 111
* i2 P. C/ O6 Z // SPI1_CLK ------------ GPIO2[13] -- 466 j2 V2 o+ B# Q. ~: d, ]" Y! _
// SPI1_SOMI------------ GPIO2[11] -- 44
T) M. W7 R1 P$ u3 y; U) \: I // SPI1_SIMO------------ GPIO2[10] -- 43 k* t2 O4 Q/ n' @, H& S
// SPI1_CS2 ------------ GPIO1[0] -- 17" S* l+ J& p& Z8 h, w- K4 {
// SPI1_CS3 ------------ GPIO1[1] -- 18$ i& P) O) o6 E8 c6 q
' K) I( S! }) Y) A. B, K/ z6 v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* S4 f" P5 }- `, f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- y5 E( ^% y; o1 ^: ?! N- n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ K( t( U8 v; K( l) _+ O4 T9 F' A" E: H W* k1 \9 b# Z' O; `
//DRDY
K" C0 J" Z; B( z& [ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ I- o, [/ C3 y- B3 t2 e
// CS2,CS3
% I. J! R: m. ?; n( w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
4 ^$ ?/ @. X/ u& F/ H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ w8 t1 |; {' @' i' r7 g: R9 j
//SIMO, O/ n7 Q4 k+ `% o; a
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 w( \" f4 ?4 u1 K" G //SOMI9 \5 a$ M. p. \6 `
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 C8 \1 j2 {0 L9 g' R( v* [ //CLK: m! _. r" q/ m% T' S
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 s2 a; H6 X3 a" @# g' \
& i+ D/ y- V* b // LDAC, V0 C+ ]' a2 x& L7 z: |0 O' {/ {
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
; |& k% c; O3 ?1 N$ d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 x5 F5 |- @: G5 p% H) T" { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 \6 A/ ?; |, i7 S5 b3 g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" r' W; I: _: m, x( v: a! t
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 E6 @& L5 T( T0 [/ O" u
}/ G% K+ S- Q7 w& a; T
' T; i6 [7 ^/ @
int main(void)8 ^- L" p4 T! W7 a. [4 u: q
{5 R( r0 [5 o1 X3 G" a/ ?% C0 H
// 外设使能
& B4 O: i R; q2 a7 w PSCInit();, F" F/ I0 v$ I. s2 N
% \* r5 s6 c0 c
" f$ k I7 W( x // 管脚复用配置
: _. `, @/ z4 X GPIOBankPinMuxSet();
* q% B. l r+ d3 d% l) y9 ^) O for(;;)
- A# c5 h, F0 h, N- a( x3 Y {, q" _0 W) q0 u; l$ `3 j
SET_SCLK();//时钟正常输出
b$ b# o$ O% k- S% J- p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: [; \1 Q( x2 f0 v/ I% E/ P% w" m+ J- g9 V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 D! @' l: Y: ^5 [, u: u7 v: w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" ?2 U+ Y+ Y; l* R, ^ H1 x
% P: E' ^1 C1 O N p delay(20);, h2 Y! c) e. d1 d( o: @; {+ U% J/ y9 f
CLR_SCLK();
! f% f+ s! w% T7 P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ z1 {1 I3 L% R d I$ M1 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# X! B4 j3 u$ w8 e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( y) i4 s: p9 V( i* I- F5 ?0 f delay(20);7 y5 x2 B, i" M! u
}
2 N! ^! K; j7 ^& y9 ~. |) }}
' X! v# W6 c% [0 H* f* \ |
|