|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 A8 B- e; J7 n; l! C: e4 fvoid PSCInit(void)
; e; o/ e, }1 ^$ [+ s3 ]{( [* P# U1 c( G) K6 ^; K
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 Z1 [" f2 h1 e+ r' V% T: ^1 C
}8 ]7 v- k+ u, I+ Y' W- a
7 n( ]5 V" S9 v* L+ _void GPIOBankPinMuxSet(void), _. P+ E4 l# M6 P! y; s7 q
{& i$ }6 j4 D% H' Z0 J
// DRDY ------------ GPIO6[14] -- 111% `+ L3 C# A) `, Z% L
// SPI1_CLK ------------ GPIO2[13] -- 46
1 c, f+ D" j! y, g B // SPI1_SOMI------------ GPIO2[11] -- 44
2 @2 N6 O: F' \/ G // SPI1_SIMO------------ GPIO2[10] -- 439 y5 x) |) C# P: b0 r
// SPI1_CS2 ------------ GPIO1[0] -- 17
; \) U* S9 w/ Z. ]- v$ ?7 p // SPI1_CS3 ------------ GPIO1[1] -- 18
4 @ ?7 Z; F! \% Y) J6 ?& j( ]" ?' H/ l' [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 H+ i0 _) O7 W/ T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 P8 g9 }, x1 {" N; d0 y/ L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ F6 ]# s* ?& ^8 Y+ g) n5 D3 G L0 S
//DRDY5 b1 M6 y" ~1 K2 a( S8 \
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 u) A. H: G' C- |) _
// CS2,CS3
4 }0 W% @& v9 v; z GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& T3 C% s% r/ V Y1 P GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' B3 x( a/ l: t //SIMO
; T# b2 O' L2 `1 P( ]# l* T0 K( N( U GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ k5 O9 `. D& |; F9 L: [; |# ?
//SOMI
) {% h5 Y/ K4 t GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 q% h! E+ s% V/ f" T7 s0 G
//CLK
) G' C) q+ ~; W: g' r$ L) m* x' V GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 m# |' {! O1 y* O# V! H+ n& B
7 d- u# O1 f/ R9 {. }, o' W# j // LDAC A# ]$ D0 f5 K
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK5 ?0 D9 z) f7 y. N* G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! j2 G. A8 V; R# y" l& q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 x6 b/ c' S* }) y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 @9 c- F5 V0 l% a: H$ f GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, B- T/ A3 J @& J
}1 E K2 |1 B! T/ z' J1 ^
+ j7 F/ c: }* i7 kint main(void)
" s! R* ?4 S+ P3 Z% b{
) B% N; K# l) i5 o3 m. R1 r // 外设使能! O" k6 @9 R0 d; t |, v
PSCInit();5 j- [) @' `" V
% j! R; g! M/ V& _9 i
; F/ A% ^! i/ b9 k% ? X3 h0 a- V2 j
// 管脚复用配置5 b. m) f; a4 o( K% S
GPIOBankPinMuxSet();
5 M4 ]: r2 K; u2 i" { for(;;)
u) B* r; P* [3 T7 h" ] R {
2 h' c7 R/ m, B, e SET_SCLK();//时钟正常输出
& ? q, T/ M$ o% A9 I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 U/ S4 m. C" J/ f0 s5 E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 n! ?5 G4 j+ P& y7 b' Q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 a" b: \2 f) R8 w
* k9 W+ h6 p) L6 o delay(20);
" `( Q( p7 N, f+ S) D$ M! x$ ?# O! r CLR_SCLK();' `% v& [2 P n2 W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* \+ X- ^0 ]: ]7 m4 v* U7 P* o, d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& `# H! r" m/ y# @2 Q2 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 n- I9 K+ [; ^; \1 M delay(20);) h" w) f: ^9 f2 ^3 j% f+ l
}
5 e! G$ V( e9 O8 ?- F& q- [}4 C, n+ r+ b9 j. C2 Z, |+ _5 M
|
|