|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
7 T: |! i6 F! Gvoid PSCInit(void)
, q- F( a5 T/ {0 l( ^" c( f$ x, S) `{
. L' F* U ~5 Q. p1 y- O6 q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; S+ f$ ^1 Y0 f1 c}6 p6 R1 l- [7 p) E
( S) ?) _' T5 V0 Q. j, \
void GPIOBankPinMuxSet(void)' c( B% ?& `" O1 G. J; _- T
{, K0 R1 s* y p: O$ V- ]
// DRDY ------------ GPIO6[14] -- 111$ f" [) V: O }0 I; N) E W; a
// SPI1_CLK ------------ GPIO2[13] -- 46
7 i, w! z) |" u! S$ z // SPI1_SOMI------------ GPIO2[11] -- 44
' [2 F" x8 W) @$ @3 F" A // SPI1_SIMO------------ GPIO2[10] -- 43& R3 X7 t" k+ F/ t1 D
// SPI1_CS2 ------------ GPIO1[0] -- 17
. s1 k& A: O( y( \, W; p // SPI1_CS3 ------------ GPIO1[1] -- 186 o/ @/ y% T( X: _/ d5 H
1 ]! {, a d1 ?8 t+ G j- \0 _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# c4 [4 t2 N/ C0 o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& k# ?# l* o- y: _% ^# N( ]+ X5 } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);. X' [; s- U+ C/ _$ t# a9 U
2 b9 C6 |+ v s% {4 \' [2 H9 q
//DRDY* H- V4 H( l2 p0 X4 W* w5 z/ R+ z( b" f2 U
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 c' g; }$ i' d2 R4 _8 P // CS2,CS3
, H9 a5 W* n8 A. w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
2 `* J% w* h* d0 c+ C4 S GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS36 a- j7 t$ `1 R, @' p5 H
//SIMO
1 r# X# m% b' ~, u( }3 z! @ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. E% c- v7 P" l+ M% y% I //SOMI
( l2 a+ q- f9 r& ~9 G5 w" h$ r GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
J) w6 r& b$ t5 W6 k5 C9 L# ] //CLK" z% m9 W/ U8 ~* ^1 R# A! r
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- i( i- G& C: d4 j3 m E& d. n5 A0 ^
// LDAC) H( s- _0 p0 \. z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" s) T' u- K) K B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
W, z& Z$ N: C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ |9 o9 j9 l' j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. }3 a( D' y. ~6 M" \1 L GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ P) q) N2 z; f0 e/ v: C4 u
}" I( v H) j0 v1 P) q l$ Z
3 d( [2 L8 j& v" q& i4 q* Uint main(void)
* L$ ^3 M1 x E, }{. ~! B! G, ^0 r5 Y, ^2 h% `
// 外设使能
& \, y5 Y; y2 u# i; h' V) k2 C1 n PSCInit();
% R: F, u/ o; J2 @' n8 i' v( k" J% ?6 M* u* b( v3 V9 q! y
- @* Q# J' v. _) C+ l // 管脚复用配置
2 Y: V2 Z% ^" A- b# W, v1 Y GPIOBankPinMuxSet();& E+ j- O# v; p+ l
for(;;) R, Z) B- D% P8 p
{
- v( f! d8 x6 f SET_SCLK();//时钟正常输出$ V! t. |/ K" E2 l/ m/ {5 K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 B) d: l; d0 [- o6 ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" Q- D. z1 G5 N8 r7 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 ]/ D+ T5 b" A6 p4 v# o
' m+ w$ n6 n+ U. s3 _ delay(20);
: C; U# O; K7 O8 |1 h: | CLR_SCLK();" t m3 o/ |3 s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, m4 H# L; A2 q$ B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 ]- C+ P4 e$ R& N+ @2 H& B' j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ l/ k6 M) N7 P$ X$ v1 l
delay(20);
. s9 D4 g, O- z* t) H, O }
- }8 A8 t" ] m. A; w0 Q}
2 w5 P+ K( b$ K5 }1 Z1 P* W" H |
|