|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ N: g8 E/ v/ T" ?$ ]/ avoid PSCInit(void)) {2 P B/ A& P' C4 s# n
{
. [. U: c: M! w- p: c3 B PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% T/ ]! H# P( ]2 u8 g: e}
3 V) {5 Z4 F4 U, {" o& f# d6 a
! }6 a# B4 u! x- {6 avoid GPIOBankPinMuxSet(void)* ]/ U* g5 V y3 c B% K
{5 F9 j9 v* W" a& y
// DRDY ------------ GPIO6[14] -- 111
+ O& E/ E" n* E" p# f // SPI1_CLK ------------ GPIO2[13] -- 46# ]& g/ y( [4 @! R; M; y: w, \
// SPI1_SOMI------------ GPIO2[11] -- 44
; k1 d( N+ u% @/ `& ~5 L' A% p // SPI1_SIMO------------ GPIO2[10] -- 43
' ]% j: N$ u/ E; t# ` // SPI1_CS2 ------------ GPIO1[0] -- 17
8 x7 T+ t4 t6 S. x" ]8 n) P- _ // SPI1_CS3 ------------ GPIO1[1] -- 182 Q+ p( Q( \, H2 s& ]3 E, Z
, Q0 [3 d* }8 t: S8 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
m) n$ F& V- h- Q! ` HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# y$ T% G( V* V2 |9 h" i, _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 a3 K6 x; ?! |; K9 Z
9 E/ N8 Z# j" b' ]# w% n
//DRDY
0 e3 s4 L2 ]7 N: j- l GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# p7 Z z* r$ Q
// CS2,CS3
* R' i4 m4 i+ x; d" B GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) F' U8 t0 X9 n7 q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& [; J+ b m; G* j1 H //SIMO
' d) R }( t; `5 O# @1 q7 Z( K5 f) J GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. X+ y% j1 v: }3 X
//SOMI
6 R6 m) K/ h: Z8 n0 z: H GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" L3 T% k' {( r! j8 s4 I4 S- N- ~
//CLK
- z* G- G8 I; u2 @; K0 n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; f0 L7 h; m8 h. a% g: d6 e+ x; |: m$ [- T4 t* X% R
// LDAC
3 v- U4 V0 K4 O- ^" K* _8 G GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 P4 p$ f7 n% d4 g9 y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; G5 J4 M1 h9 p% B( o! c# Q+ S3 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* r8 v7 |2 a+ T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 H' O' L0 W8 n4 y% S! F$ B; z+ x GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 _0 ?; n, N( ^- D- |" k5 ^# r
}
; S$ U" D; W$ {% i" l, `
! d4 e) l) a8 V2 }" ~int main(void)
; X/ \" ]& ~' ?& r9 ?{4 P j. i7 q8 k0 @ d
// 外设使能
: M' d! }% M/ Z6 ^* P1 ~4 R PSCInit();
1 C; P# g3 h1 [) D6 Z
3 i" F& A7 t# l5 }1 O7 X9 j5 e
1 @, k/ |5 P2 r% N // 管脚复用配置
4 Q6 A: D" w6 i' {: Y GPIOBankPinMuxSet();
0 q" X$ W7 r* ]/ i2 p9 j- K! S+ l for(;;)+ L" ?4 F# i0 _; z
{$ i; A; [8 B6 C" \$ E* Z P! q
SET_SCLK();//时钟正常输出
: Q. a- E4 z0 ]" G( g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 x- F5 A" s. ?/ e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 A! P9 E/ @/ J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& O* } c3 [2 M" Y5 {. |3 B8 d" M2 H o: R
delay(20);
6 v1 K+ H* l" u* o7 Q CLR_SCLK();
1 j' w9 s! G' N1 Y9 G1 Z4 H* K5 F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
a* s: C, i" c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
a* w5 v4 \( `. k0 r5 c5 l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! T) R; N3 m& L3 x# y7 {2 \2 } delay(20);" ?! N' [7 O0 z* h% O" A9 u
}0 Y6 Q+ q1 U& ]; E- Z
}6 Y% [! H0 N" p; ?: h7 ]
|
|