|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: t+ R; t; e, Y
void PSCInit(void); l. |& Z0 {6 `% j. x/ x' |
{
7 [+ _7 e0 |& G7 I7 k PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
t P2 _: V# c! P; E$ R/ k) Q" f}
5 x5 d: e8 F8 ^ b+ X3 P3 F$ T
( v9 x9 v* W, K% \void GPIOBankPinMuxSet(void)) N5 L5 O% f: _7 e6 O/ ~
{* x( \4 o3 o4 g5 w; W
// DRDY ------------ GPIO6[14] -- 111) b5 ?/ U1 B }7 n/ q" p
// SPI1_CLK ------------ GPIO2[13] -- 46
) [8 B. u# ~4 t5 F. P8 e // SPI1_SOMI------------ GPIO2[11] -- 447 W& m/ M4 D4 U3 R
// SPI1_SIMO------------ GPIO2[10] -- 43
" ]5 S6 ~9 _: B! R: F: l# i) ^ // SPI1_CS2 ------------ GPIO1[0] -- 17
6 x. o. I$ b: W! J // SPI1_CS3 ------------ GPIO1[1] -- 18. W! L2 Q# E$ o, u% ~6 p
3 f/ |4 c# `! t+ I( Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
) x' s: o) x$ Q8 b; c& W7 G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 S ]- F; I! Q. \- H* k" p# t* v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
w$ N* H! U+ j" n9 [/ T; t& S" Y* l F ]) E d' ~% `2 S6 S+ Q6 h
//DRDY
# T0 [$ u2 e/ N, a/ K* H2 Q GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# b3 o/ {# X$ G& S/ ^$ \/ S, ?
// CS2,CS3: g% u! p) F4 S; k* w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2/ L* ]1 E+ R+ Z6 _, N: C
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 |! {: W9 g7 w3 Q4 U1 f/ E //SIMO# a( a* \" ~* s
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ o/ K7 k/ R4 a& u5 m( T* l
//SOMI6 a9 j- }; b* p& S2 f8 k" b3 j0 a! \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* c. V* N1 i0 V) u8 B3 | T& d //CLK
Z5 F& ?7 p( M3 L GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 i# `' M; W4 ^. s. D
" M( M1 D% J1 p- F
// LDAC$ G5 j9 F; b2 D. |
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) W) x( o* z# W; J w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 u3 ]9 x1 ?( b/ f3 H; @- S' R; b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. ?! I1 T% C' W3 G3 ]& N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 r' d, F' \3 h4 _! l) ` GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
. _& W2 |6 V, A. X! z& o2 X+ z) g}4 v( ~% h+ u# W) L1 O; w
/ C9 q3 n+ B! m& g. C# C1 v9 [* |6 M
int main(void)- s% `8 w; p4 W+ w2 p& X' T" W% T
{9 U9 X8 a$ B3 `4 x; A. p
// 外设使能0 _ a: h* C. j, p
PSCInit();
7 P8 O, u% D: |3 _4 S* e( m
6 Q$ h, u4 u% K! @9 \% ` 0 z5 n, b8 D) @6 V* T
// 管脚复用配置
& w# t( y J; r. V! o4 ? GPIOBankPinMuxSet();
3 K0 y& |" V X0 s- r, r/ g: I( a: Q( a for(;;)
) n0 P# u7 H+ x2 u: @, l {* m& ]4 g; l2 E4 Z' x0 K5 |
SET_SCLK();//时钟正常输出
: r* i$ ~: s/ P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' t4 n2 ^' m# a; j% K, S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 r3 L0 y6 p/ T* f5 V' K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. q$ @0 l4 I, M1 g
+ s( c4 l& q" e: O delay(20);% W3 m3 ~, c2 I7 @0 G" s
CLR_SCLK();
' m- T& B. d7 Q7 B+ U5 f) d5 t3 F; J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS33 d+ F6 J5 ~+ K3 o% ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 _ s i: D9 P: x: D3 v/ |% N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' ?8 O! r, z$ L# A
delay(20);) `; | N9 ^; x4 Y& e- F
}
6 R2 @" @. c2 o& \( R}
3 e7 k' C5 ?" E" H; w |
|