|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* ~- Y) o+ g. o- c; M1 Kvoid PSCInit(void)
4 K& @$ O5 J4 d$ v" y( c{) B8 u! g6 D& r8 z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; p' |7 Q& j$ I& j/ N# W}
; U% @4 h( H! P0 H: R) b) }+ y0 j2 \- d+ @- B6 m
void GPIOBankPinMuxSet(void)2 z% e; s, X9 f; C4 _1 A! I
{
% l/ d; Y5 }' d1 N5 y- L# U // DRDY ------------ GPIO6[14] -- 111
/ M% i* Q- L+ R& u // SPI1_CLK ------------ GPIO2[13] -- 46% P% m- v* R3 X' I- \3 n% E/ p9 F9 `
// SPI1_SOMI------------ GPIO2[11] -- 44
* W% C% J: @5 |1 I: f // SPI1_SIMO------------ GPIO2[10] -- 43
$ H& P% s$ F0 ?% i8 P: x7 d) k0 _ // SPI1_CS2 ------------ GPIO1[0] -- 17
, j C* J$ B* c( ?2 i F* Z // SPI1_CS3 ------------ GPIO1[1] -- 183 ~/ w7 U9 j1 s- Q1 d/ O: X$ c
; P6 B- f* T6 F3 D9 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. N+ _: i; E' `( k5 e* a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ J% z: e0 v2 U! @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' \' a) f) ]' h, L# T' H
# y6 Q$ `2 W5 F1 a. h) n( v5 o
//DRDY4 k N' Y+ q2 z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
S$ } p0 Z6 @' s // CS2,CS3) }) Z6 `6 c% [' K
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! g% j; L f/ C2 T- ]; M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3% M2 G( k) @; V' G% f! F0 y
//SIMO
3 J0 f) p2 F' D. M; V' H- E GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
N' W; i3 b$ D //SOMI' L, @8 d1 x! x) T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' R" h7 l. @( f2 b
//CLK" s( s' ~+ c5 P$ }6 i
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. C9 Y0 Z6 d) _' x# P$ X( Y" R/ r9 O3 T
// LDAC5 E" o* `0 Q3 g- A
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 S, E9 C, j( Q5 L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' A) {( O' p2 u GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 g5 T# X2 U' M9 ~$ S& S7 a# f I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS33 ~5 C) i7 M' G" O
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' j+ U: L3 |. G2 b2 M}
5 ~7 P. d* F4 q( I
g' c0 l9 ~+ k) k# X4 }) K; [int main(void)* h1 O3 r) }4 j. v) X+ I$ R( I% b
{; f2 i- |$ O; o
// 外设使能
+ J7 }+ X1 k! ?. U/ ~4 W PSCInit();
, P4 G4 e7 Q* w( w6 J* y% e- X/ Z3 t5 Q8 }/ \4 \: o/ y2 x
1 P% T; o! n+ c$ | // 管脚复用配置 V" \7 J+ T, n2 s$ Z' g! c
GPIOBankPinMuxSet();
4 P) \" X6 s& J/ K# M3 ~ for(;;)+ s2 X6 X: T2 N4 N
{
" ~9 L9 d. F: l' ^/ G! T SET_SCLK();//时钟正常输出7 Q, j1 ?" R4 V' i. ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- w& w+ B1 K. z. M$ T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: J! q% v) c. H0 l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- ^" p+ K) h/ D
# q) v0 E) I/ x l; J/ p
delay(20);" Y# F8 I# X% P- h# h* N7 M, W+ t
CLR_SCLK();8 U& H& p' l" ?) {0 `! U6 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 e% V6 ^6 A {; B6 @0 A9 s& s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: @# @" n2 g( H& O6 M4 n# ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- K6 v5 O) j: i: d7 E! f
delay(20);
4 h' Y: k7 d% Z q- ~: ^# ^ }5 S: @' J' i8 H! \8 M( w
}
9 J* s$ a/ q4 v7 C5 n. a# I |
|