|
|
使用下面的例子代码,不能使SIMO和CS为低电平:5 e; l5 e3 ~7 J+ ?; f( r& j
void PSCInit(void)5 R: [ x/ k% h
{
/ r( d- w- o, |( ]4 f* J, w PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 y8 c6 n7 j0 f}
) k: k# ?/ @. w( C7 v6 r9 [9 [0 W1 Q7 b& F* h! j2 n. q
void GPIOBankPinMuxSet(void)
$ Z: \; Z8 R; |: }2 |{
4 i u) c. A8 ^) s3 U% K // DRDY ------------ GPIO6[14] -- 1118 I) Q+ m% P0 `; X* G3 f
// SPI1_CLK ------------ GPIO2[13] -- 46' a- m9 Y0 }$ F, g/ E- V
// SPI1_SOMI------------ GPIO2[11] -- 447 K& L3 I/ ]! r8 \# V& x
// SPI1_SIMO------------ GPIO2[10] -- 43
0 }; y/ A8 G8 C- d4 n, h. B // SPI1_CS2 ------------ GPIO1[0] -- 17* p+ q* N+ q0 Y, c/ \! J
// SPI1_CS3 ------------ GPIO1[1] -- 182 `7 [: i+ y$ E; Y% g7 k
8 N6 Q* B. r3 b, v- @, X2 k) D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* b$ ]$ v( W+ s
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 O. f- P: Z7 Q. a. v: ^* k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);0 }5 S6 f; [: W8 N6 h
; B9 J" m* _% H& c9 H& o/ ]* [ //DRDY
/ C& n; n$ [ `# |* E9 x GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" l+ F# T) o8 M9 r( f8 } // CS2,CS3
( `3 x9 M3 _+ C GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ f: t, K7 p0 p8 s% z$ x GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- ^; @* s! ^1 Y } //SIMO: b( s# o5 @. g" `! e
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 E) D* S% i* ^% B8 H1 ]( s0 v
//SOMI/ f- f2 d( D, m S! n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: a! t- R' m" o5 ?* ?- J4 B( {% z
//CLK
& J0 ]6 I+ T7 L( d/ a( U GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
! o" N$ r* c% m% t; s" O: L+ f( k
// LDAC
% |) T2 l) x# k2 e GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. s5 J' B% {0 S: n. O3 \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' l6 K8 y; o5 y7 e2 e1 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) x# B, f, [) I# j GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
% r0 g- s i j4 s9 H- \9 V GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, b+ I8 u2 ~& V}3 [3 `, V- X9 x. Y
2 U: t# T; w" A0 r5 `
int main(void)
2 e& `2 `* V* D4 Q7 P8 ?0 y{
4 [" Y& t. o5 F4 o- O2 k6 G // 外设使能
) c B& z+ l) \! U+ q PSCInit();
% k7 }0 \6 }6 }
! {1 b5 C+ y5 ^9 i
% ?0 ^; x% M% i% {, \7 t" K& y/ P // 管脚复用配置9 i. e) [5 w w7 n0 a* ]6 m: x
GPIOBankPinMuxSet();) j/ E) K. M. m
for(;;)
; O) R) |0 }. g; u" ~ f* z" I {; G- e% x, c2 ?$ Y, D/ |) s. U
SET_SCLK();//时钟正常输出
- t1 F5 v5 N7 Z* Y8 ]' o* ] GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 J2 ]$ S0 ^8 j/ ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS37 R# o3 N9 i U# ~: j2 O; ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 w5 ~2 I8 M/ y! K) r8 v
! [. t. L1 j) |$ K& {$ c8 O delay(20);1 h; `' A5 _3 M8 R7 i) V
CLR_SCLK();0 L3 @4 p$ }" U% e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: Z$ S3 i F* @5 j! n. n' q* F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: d/ o5 C* W6 p% c& A/ A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 {# M1 g) j4 | K9 A delay(20);
, W$ l5 v6 u1 ~6 B }
: }# e) P( a/ V3 X}; v7 u \# l% A' g# v3 t! W+ z
|
|