|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 D3 p0 ^* O( {* o
void PSCInit(void); a3 v4 ^% ~! o, `$ \4 D, V* H
{6 G! I q( t# c6 p1 K2 P3 @
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 _5 n& p8 p X6 S1 @5 Q
}* C# }8 i5 o1 L
3 i6 l9 L! w9 j8 z8 I' d- l% l* U7 rvoid GPIOBankPinMuxSet(void)
+ r! M, n- N' y8 ]. g6 U4 |{" K" U" r0 b H% h
// DRDY ------------ GPIO6[14] -- 111
; w$ g3 i+ z8 l3 l" k // SPI1_CLK ------------ GPIO2[13] -- 46
& u9 t* o& q. x, J% L* e: ` j4 k$ F // SPI1_SOMI------------ GPIO2[11] -- 44
9 b, f' t7 }! @9 ]2 @4 f // SPI1_SIMO------------ GPIO2[10] -- 43
! X3 h& j5 Y% K, T // SPI1_CS2 ------------ GPIO1[0] -- 17; z7 v3 ~, R4 w( N% b% N
// SPI1_CS3 ------------ GPIO1[1] -- 18" ~! @/ H1 O. a) N4 e
$ J0 h8 A4 N, ` v4 u: C7 r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
, p x. S$ X! R7 q. V4 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);7 S1 W z/ q2 B4 q4 j- T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
M! i$ S6 h+ S# \( ~& [# `- [! G% ?
//DRDY3 S* R8 N' |0 v- v" X& H: l
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 A6 ]6 k) g$ v4 K, I // CS2,CS3& {2 d) X' [, _, D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ V; U2 w) }4 d8 L+ D8 C
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 V* ~* A8 J t" C( V //SIMO% B: n+ t- \# E4 j& o9 |6 R6 N
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
' T- B9 E4 M L; e* y+ ?; d //SOMI
" M, B9 z! g. {' b0 C GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) [2 {9 D( k, W //CLK; v, \5 i {7 T/ |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
4 x5 a: ^9 A: \* ~' }0 b$ Y- l }/ V- m" m9 H X3 g' ]
// LDAC' C8 z' m! V& \
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ f/ g% w' D1 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 h1 E1 D7 ~8 H7 c6 r: X. s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* \0 a% y, j/ v' J7 F: L v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 d. J6 M4 A0 o GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ {' s/ j v0 i8 u
}
- a6 ?) P c" H+ a( m! A/ N7 y1 \2 g
int main(void) O- q+ U+ S7 y8 V6 ?
{/ z _* \& B; J6 r! d9 A
// 外设使能
; p; G- O. a9 _1 u8 D: N: a( x PSCInit();! Y# G: S7 s& w4 D
+ ?, `% D) C/ l+ ~+ u
3 r; J0 [9 ]$ c8 h& u
// 管脚复用配置; [2 L+ h4 j% k
GPIOBankPinMuxSet();' N/ A, s2 T! z8 @0 U
for(;;), {0 z, x( j# U7 E Y0 H
{' r; N$ Y2 E+ e2 A) t1 o5 J9 W- C
SET_SCLK();//时钟正常输出
) o% r( j Z, ~ x8 r7 P: i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! c3 k6 s. \: A3 D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& P+ @3 X$ P$ \" Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# {/ Z1 f2 w$ b% m9 b
) T5 Q( t5 r5 D! T9 B/ d) F# h delay(20);
8 m5 U+ k3 i, J6 u1 b* c4 t" u! x CLR_SCLK();. n* S( K5 `+ Q# e( P) e6 ?* J* f2 z& x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. U- B i8 X# A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3( ~/ x, S0 _: [% p% ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 _) D; { q* U; y
delay(20);* L u" [) m3 ]6 ?$ D- ]
}
" _( Z, N8 ]& ?& m0 F8 N6 B4 {. [}
; z" P6 E' a+ V0 h' Z |
|