|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: I$ K2 j' D2 V1 ~! Y5 v. K& {void PSCInit(void)+ r8 j, N8 O; \) `# v( e& F/ ^5 ?3 r
{; t% G- }; e7 s3 n- \. h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);" V; |6 Z! Z# d9 e0 J3 @0 G- S
}
* q% H- C% {0 H; j2 K4 J7 ^2 K/ m- `- ?
void GPIOBankPinMuxSet(void)0 S# y" ^ p, P' t* ?3 i# p* h+ M
{3 Z' b: ~+ p+ W
// DRDY ------------ GPIO6[14] -- 111
/ i( G7 L; ]$ n# V // SPI1_CLK ------------ GPIO2[13] -- 46
! R$ q) p! ]5 I) Z: F. l3 I' X // SPI1_SOMI------------ GPIO2[11] -- 44
6 ^ q+ i, m$ @ i/ s0 v // SPI1_SIMO------------ GPIO2[10] -- 43: w) z$ {1 m/ ?* u
// SPI1_CS2 ------------ GPIO1[0] -- 17, g3 v7 ~9 W7 v7 l; \0 f/ i
// SPI1_CS3 ------------ GPIO1[1] -- 18
# B; m& e7 \1 X0 s5 J n9 d5 A' |9 t4 y: H% m' {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* T5 b4 m; w+ l$ P5 C ~. ^$ }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 b3 x2 R4 A. I5 D8 A+ F7 ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 q+ F- B3 [* O* a9 V' E8 {
$ u7 t4 \3 y# V //DRDY
, Q0 j) ~) q3 A0 b% c0 H8 g GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* O' H2 E* Y' M/ @6 l; U4 d+ f
// CS2,CS3+ g2 M+ |* Y& Q, Z0 _( S; W5 n# l% s
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: S }6 M# E; m. b
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. h3 P, E. k" b, V2 n: l
//SIMO. K U; \, u# S/ j# q2 _, s( c4 J
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO% @8 \- _/ l: {& c0 T9 _8 ?
//SOMI
7 [! R# a9 x% ] G A' \( j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* ] T% U4 C8 R3 Y7 m' d! d; p //CLK% J! ]3 \ \7 a
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& p! w4 D6 ?) D0 |
1 z& O; j2 A3 ]2 b! X // LDAC! l# h& u; U; I( B* Q+ n
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ }* ^% y1 F: u0 {" ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 r" m! u6 b: A' i" N! P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 _: D/ C. c. r4 v) U. @& z1 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; V% Y6 o& x! q9 _+ b. G0 q# d
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; J7 `) h0 j; U- |4 i0 r4 T& `, b2 w9 L}7 Z; K. V4 N v# S3 E
# V8 ~! F: F/ |2 Y" Pint main(void)
+ N3 H1 k7 [3 a- }. T) J{9 _; I/ c& Z. M' o
// 外设使能
1 r4 r" z" g% r1 X5 X- N7 Y7 Y# ~ PSCInit();
, V9 |) ~, P( [0 _- e
, T" y/ T* \. b4 V& |
) l# O% M! w1 d& S2 Z // 管脚复用配置1 x7 _. M+ r" |6 u
GPIOBankPinMuxSet();! Q0 a$ z& ]+ b
for(;;)4 K7 K" \6 t" k' M
{ ?; @2 @, e, a# i }2 q
SET_SCLK();//时钟正常输出
8 |- W( N1 r, Y! [. H7 } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 R4 ?5 ~- D2 ]2 ^/ X3 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3" e. e) `+ w* @' F6 `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) {" t! l# I9 j4 I
+ Y9 y& t- r( n/ }; J
delay(20);
' r- x7 n) K* z' s, B% J: l CLR_SCLK();
" v6 C! ~4 }1 F1 v" i6 h* y% r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
q0 E1 a" K+ t6 A5 w; S' L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 o8 l& K! D: W7 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# F5 R7 }& F+ U1 g" G7 A2 e1 T3 f
delay(20);
( b; O3 Z5 `3 Z7 A }% P3 Q/ ^. w8 a5 s, Y7 o& C
}0 i- m' d" {; H9 o/ A
|
|