|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 W9 J) `3 v) M5 Q% u
void PSCInit(void)
: ^* w0 t' P) o8 j1 n0 |/ R* |{
# `# y3 k" |" |. k* L5 T PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" M9 C3 e& S5 \' p1 W: Z}
7 K7 J2 f; M4 v4 j
/ V( p' L: a( Q4 v3 X! X9 n' Bvoid GPIOBankPinMuxSet(void)
8 z. | U* G, c& W2 ]/ ?) b{8 Q9 U7 Y+ R& g
// DRDY ------------ GPIO6[14] -- 111" @# X5 T6 _1 Q
// SPI1_CLK ------------ GPIO2[13] -- 46
! j. Q4 J! P+ |" e* G // SPI1_SOMI------------ GPIO2[11] -- 44- ], \* C) |5 j0 ~
// SPI1_SIMO------------ GPIO2[10] -- 43 W$ Z( ^% g5 b8 W
// SPI1_CS2 ------------ GPIO1[0] -- 17
+ @4 k8 g0 Q; K // SPI1_CS3 ------------ GPIO1[1] -- 18, E+ F: O& t5 _
0 x2 _' w5 t! f! V$ e6 c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- z- ~8 |) g: O7 H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 O% ^( I% v) Q" L. ` HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( R# a; d$ K( w( T+ u7 y3 h- \: b m, e- ]0 C N! w& F+ J
//DRDY
4 I$ ^( P6 v2 H( [4 b7 m8 l GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 u" P0 S1 F! v7 C, h# M
// CS2,CS3
* L6 [2 G. |+ ~( q+ p GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* u, F9 ~/ K, b) [9 x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
, i6 `: i8 @" A( V8 n' Y //SIMO2 k0 t. T* ~( n# w" _0 E
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: B$ K) w2 l% N$ e //SOMI
/ H2 s# t$ k0 e1 S( v9 N# U- [ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 Y% ?2 \, y& l4 d! x8 c //CLK' i8 r; g9 y, \3 V
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. K( c$ o2 w, T- S3 y# n. c* E0 b9 S* p. _
// LDAC
C& {& B: q3 H GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! p; V( D1 i" {8 i0 H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% }; o" u' C/ r/ a( E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 Y" n+ q7 U* D% m% h% d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! v% ^' R( _6 T0 l2 P8 m
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 {; P; @/ b* Y6 V& h/ ^}
( }. N+ E6 `5 l1 J1 L, z( ?6 J1 l
+ ]; @/ ?; t$ Y4 i W4 g7 k6 Tint main(void)
, y V' X7 @1 Z T2 a5 ^( ~( \{
: o! W4 T8 Y: R. t // 外设使能
% [* j# W7 Q( s0 Y! t PSCInit();, p; ?$ m9 B3 Y( Z/ o% [) j9 g. y
2 G! t* p# @/ F c0 S + [. w& W' n; V2 Y
// 管脚复用配置
# `8 N& C/ v( T GPIOBankPinMuxSet();
% ~( `! c' }% T; R1 d' \+ G" O for(;;)
* L3 `% m" Z* l! R! p {
; Y1 {- V9 B; t7 v, u SET_SCLK();//时钟正常输出0 P5 ?9 J+ }1 @& W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* \' I' s9 w' c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 ?: R& ~) c$ ?. s x# A! V* J- }8 M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 j M% w- F. y7 o* O$ q* q- y* j' \6 g) z4 A
delay(20);: H) a% \$ L0 |' @ T* Y/ D7 r
CLR_SCLK();0 |4 G# t+ s! v( ~+ @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ W! }+ f' F- y* I1 V9 p) c2 Q' a( Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3, ~( m, b& o) B. H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 L+ }' t* X0 a+ i' J4 _0 g delay(20);. o& Y7 r9 t& t3 r+ M7 x' q; A2 z
}
& `' E) D( [+ P/ ]6 w9 `8 k}: Q* N: w; a+ y( l# W2 [8 F( z
|
|