|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 }) O: T& S4 C& @( Nvoid PSCInit(void)
6 S% a' P p I1 v. o{3 Z# m8 ^1 p. P" f P* U Y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, ^% } b8 g, S1 u
}
6 d2 e4 q% X+ k1 t. X) L6 _: K: L9 X/ m0 u
void GPIOBankPinMuxSet(void)
# g- U' }: K' v. p{
0 ], I6 L$ P! `; l3 i // DRDY ------------ GPIO6[14] -- 1111 B4 z' [* ^0 \
// SPI1_CLK ------------ GPIO2[13] -- 46( e( X7 \* `# m1 y* b$ O
// SPI1_SOMI------------ GPIO2[11] -- 44
- _+ D8 f: P V, w6 R // SPI1_SIMO------------ GPIO2[10] -- 433 M; ^4 @- C$ e
// SPI1_CS2 ------------ GPIO1[0] -- 17$ b! B; S q0 V
// SPI1_CS3 ------------ GPIO1[1] -- 18
3 o' ~. V. p5 J5 {) ^# j# {1 V( p9 l3 a/ U7 Y: D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 v' R" h: L7 h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);9 n( v( r% j6 s1 g0 ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
5 i1 G: \6 i' } {8 m- v! }3 F( f% R# u8 l
//DRDY. e4 B6 t/ R0 }8 P$ ?
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ f! _) P: w" _8 \( W7 S# {; a" e! W
// CS2,CS3
8 F9 D# }; d0 Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* V$ X4 f6 p" j. n+ v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) F* I7 m( j3 i& m9 H/ H
//SIMO& d7 c+ L! Q3 k+ C) b# z9 q9 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' n( G9 `/ F/ S$ N
//SOMI
' M/ ~0 H# s G$ K$ w1 b$ [6 F+ t GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' F& v# M1 O1 J% i
//CLK, }. m5 v4 p+ A6 o8 ?7 f
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 T6 [4 \7 |4 e5 r
* F( Z5 _% V% P9 K% V! ~2 ?* [ // LDAC
( z3 G9 g7 g1 h8 k" e( s GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK# P# w h: O. t$ ^: ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" K8 }& d+ S, ^2 L5 `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) H( v6 t+ H" Y+ O6 U: S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- B1 a* W$ E0 p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 f" R8 l, @9 H. I& T) R2 l, t}
3 M' }0 _$ z; y0 V) I" u: Z- N
% G! F8 X8 H- `' t# P: J9 k* w6 eint main(void)
N: d7 y' D) h- ?4 e1 G( s+ ^{
* D9 S! H( b7 d( T% V9 F // 外设使能
& d; E. i4 ~$ Q" I/ H0 M! [ PSCInit();
8 F6 D% p+ I/ A0 a; A+ P- Z3 x2 I3 |2 S* ~$ V% j+ K! b. B3 W4 M3 v
5 w* u+ c3 I; i3 P& F! s4 K6 k
// 管脚复用配置
& X+ X" q5 l# H5 S GPIOBankPinMuxSet();+ ~5 D/ f0 f$ K. k2 `
for(;;), q( G3 _: o9 f6 t+ R
{8 o6 \0 E* U. _
SET_SCLK();//时钟正常输出5 l3 B2 ^) t# N& m: |4 |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 |8 i/ J. n& T* P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: ^ Y& T- y j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 _3 @5 |, P% [7 N1 I) p% b+ a, k
delay(20);) ^7 A6 o+ ]; L3 e, F K) e* }- |
CLR_SCLK();
$ Y6 u6 v5 A$ S# N$ H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 c8 F+ k9 }& X6 I- f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 c! ~6 |. E; B. |" T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 @, Z2 Q+ h8 z, j8 a" W, p9 y delay(20);' S1 a: T0 F; O0 i. x; G
}1 a9 l$ l1 a7 }+ z" \& `
}
1 }# w$ j- C& i, E: r |
|