|
|
使用下面的例子代码,不能使SIMO和CS为低电平:- B0 i7 [$ e8 J8 i2 q
void PSCInit(void)
$ Z/ X* v8 k) ^: Z- ^/ l8 \. p6 Y( B{
2 y) ], [- ?, M( U& E# v# G8 e PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& I6 \ Y; K9 h9 I. e* }4 u2 {5 x
}" b! I- S' j/ E" g: o
% M" M$ q5 o" D& ovoid GPIOBankPinMuxSet(void)
% B" \& S# v/ X( s- b j{
& X# C$ Y/ g9 H1 D // DRDY ------------ GPIO6[14] -- 111. }$ T* S" _5 o' u) r0 y, n
// SPI1_CLK ------------ GPIO2[13] -- 46
4 }: L7 [' G$ T- q8 ^4 a // SPI1_SOMI------------ GPIO2[11] -- 44
* U M* ] n* [* a3 b5 O5 X5 s* H. [ // SPI1_SIMO------------ GPIO2[10] -- 43; }& t2 I( e, a+ J# P; W
// SPI1_CS2 ------------ GPIO1[0] -- 17
) U+ M w) X) ?6 [. b0 H // SPI1_CS3 ------------ GPIO1[1] -- 185 p) z" P" u- J/ p7 L; Z
# v g4 z Z. ]8 h+ q4 M& Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);& ? N/ `2 g0 r/ S/ X. }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
. q& _3 A+ O4 G: b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 S6 T5 o& t5 Z% ?5 R9 w- @7 h3 x" t5 d6 A: `: u
//DRDY/ w7 g/ H+ O! k+ K) a
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ ?3 l( r% \5 G4 W // CS2,CS3
/ Z( D$ V. _9 X( C GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) S K2 M; y4 s9 l4 { GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" ^0 }/ w1 ]" c9 o
//SIMO0 B# S9 s% _: V0 a' Z7 g2 Q: X
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! n* d- K' V" ~& z" |
//SOMI
2 M! X( z: E" |7 H+ c GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" f( C6 Q+ G+ M! n3 i
//CLK7 }+ L$ P2 v% E1 P/ z$ d7 H7 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
9 y6 O M% N' ~& [0 z! c6 S, C+ ?" p* m, n* ]2 |5 C* Q
// LDAC& J1 q6 G" u" }# y8 D, S/ v$ i
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
: B* T3 ^! o t1 ]6 n8 {9 z' K3 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. T- d$ f. G1 A- c( ~0 w2 T) _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 k9 d4 L, a' n% A& D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 V' ]- |5 C5 b7 L GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY c+ ^2 C& W# U1 t5 G
}
1 v+ C. i2 p$ S
* w# @0 [: y) C; i/ U+ uint main(void)5 g$ K8 h2 e! d. r/ g5 P+ r
{
/ Z2 D" [5 u; ~; v: u$ H: T' b* F) u // 外设使能
& v) R0 t3 B( u PSCInit();0 t* L7 z" L$ P; j
2 V B7 d" m' B' {3 u! I8 H
7 N7 ^& {3 d- G8 ?3 }
// 管脚复用配置
# h4 _. M4 W" f% R GPIOBankPinMuxSet();; K2 D. {9 z/ T* F
for(;;)# m$ C6 \6 E3 F
{$ Z8 v9 o7 e U R( \; ]
SET_SCLK();//时钟正常输出- M$ h' p0 |% k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- d( [( n, P. w# ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS30 b. E, H# I, I1 P% k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
$ [* F7 u: p: W0 t* D, Q
1 ?* c: J" T1 R/ @+ R# W: Q$ `: J delay(20);8 p+ a* u9 f- A+ e
CLR_SCLK();
) k9 z8 T% R: I- C9 n& o) K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 k0 E: N5 I& |/ f6 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* S% A+ ^3 N+ u0 d# H. h GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) P* ?6 {, H- v$ X" ^
delay(20);
1 Y3 k, _4 x4 D/ N: g9 w+ | }; b) w5 y/ X/ ~6 Y- w
}9 y1 z8 r$ ^: L# P4 k' y5 k
|
|