|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 i4 h* S# y' t+ L( u- r
void PSCInit(void)
$ N/ m% N& Y& r& w{
# H" z7 A" i& T* r) W PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 l8 d2 J# q6 I! r5 i& \
}
% q; a& R5 D* L9 k5 i9 y* \+ ]7 l8 n9 @, Q" C8 i4 v4 M
void GPIOBankPinMuxSet(void)- e" l! B% I1 m2 ]
{( e$ R. V: w9 _- W9 f6 b
// DRDY ------------ GPIO6[14] -- 111
9 I3 P: V; j# j1 v# W // SPI1_CLK ------------ GPIO2[13] -- 46
2 W* y3 q* w; n+ x" i5 E- { // SPI1_SOMI------------ GPIO2[11] -- 44
' E" u2 O4 W; H3 Z // SPI1_SIMO------------ GPIO2[10] -- 43
' l2 L% e! E9 D2 B1 W5 G // SPI1_CS2 ------------ GPIO1[0] -- 17% {" @! G0 r7 ~$ V- d
// SPI1_CS3 ------------ GPIO1[1] -- 180 {( t# U4 e. d6 Y
) T3 f& M/ ^/ S G, H+ g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" O8 F0 ~" X( {5 o
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% c; y- C+ p0 z( f) V2 _* }1 c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( v5 B4 B* H5 y
& J# R% V! F* S/ E //DRDY% W" F: T9 _* i* Y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 w2 ]& T8 i: N8 j* j0 J7 F // CS2,CS32 |0 s: ~! P/ [+ ?$ Y4 @ m9 j2 U" S
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) t2 h% q7 I; l# K& R% M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' @) a: j0 U6 ]2 @# {
//SIMO
$ @8 y' |/ ~( W* v {0 J7 u GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& s" e- c) n P" R2 e. g
//SOMI H D3 F& t1 n5 r+ D3 l5 y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ o4 H7 t- x. y7 F2 i9 ?
//CLK) d5 T( j* f" ^( a! @# V( ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 l& r+ z/ D7 Z, M4 E
4 v9 u/ G c/ @+ T0 _2 m
// LDAC" I/ m$ m0 `) j' f0 v# x
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 O! N: O: {, z: u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: O1 g# Z& _* a6 x/ o% i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 D3 b ^7 [( [) T$ S! _0 x* _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 }- E, G2 q5 J# ~ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY) k3 O7 x% t: L* _3 n7 p0 \2 P* o
}; E3 ? E6 {7 I* z. u
5 r( q% @& _% x/ D
int main(void)1 W. X- l4 I0 r8 n; P( e; ~( w
{
0 i& H& r: X) o3 X' j // 外设使能6 v; y* {( j% v4 j- C
PSCInit();
J# o0 O+ w" L3 z8 ~1 Y) _" F5 t9 X5 Q, o1 p6 L' v* h1 `" C
% ?, S3 w9 E' r$ D* A4 ^( o7 E
// 管脚复用配置8 H! H& Y- M4 p% _
GPIOBankPinMuxSet();7 q# i2 k, @2 L7 H
for(;;)
, T. Z2 S2 B2 n8 r {
2 _" i1 ^: m6 O. e* b F) U SET_SCLK();//时钟正常输出& |- d3 w8 z4 G0 i- T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; ?0 r/ n; z9 ^/ C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
6 ^+ P. |- I' ?; e- D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 W5 y4 T4 ?; k4 N0 t
4 {1 Q: F* D. r: ? delay(20);; Z2 s7 F# P+ S; O1 O, _
CLR_SCLK();: m; y3 J, B3 M+ c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3! N3 v [$ E9 g4 I6 [; _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 `+ t: b, \8 G4 V5 U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( [2 ?( w$ ~9 Q3 N1 S& s2 O
delay(20);+ p) X3 Z: Q# ]8 E- u2 y
}4 \ V5 M' i% a `
}
2 `5 Y, S. d/ w p @' m |
|