|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 A3 G. v: H }$ }
void PSCInit(void). [% y% J5 N, C' \: @! ~
{, [: ~- _: o1 H' Z1 L1 C
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ l+ P" T$ }+ }+ D& y}
) D, ]% p# ^3 J0 y7 W' t
2 f8 l9 v6 B) J( t3 Q) Wvoid GPIOBankPinMuxSet(void)
" b' e1 B9 N/ H' \1 P{$ b% s( Z- J u1 q! l& }% s) ]/ k$ ~
// DRDY ------------ GPIO6[14] -- 1111 F* m; G' g* O! q. F% X4 L
// SPI1_CLK ------------ GPIO2[13] -- 46
; N+ x% e n6 G3 X/ N& e // SPI1_SOMI------------ GPIO2[11] -- 44
, Y! d2 M6 q" P. l* N9 B/ h- l // SPI1_SIMO------------ GPIO2[10] -- 43) a! U9 V* }! P$ H* S" S* R$ u
// SPI1_CS2 ------------ GPIO1[0] -- 17
$ ?3 S/ S a+ G5 A+ W // SPI1_CS3 ------------ GPIO1[1] -- 18
* D5 h- J6 o. H' B! l
, j. O) C( w. \* ?. m" h( I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# n. g! W# ?9 e: E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* K7 p. |9 p( M/ N, {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, E% I# V7 j2 x5 `0 l" E8 E( l
8 z4 b$ v0 q. Q0 T6 W: |
//DRDY+ b! U, y" ]' Q, f& _, H1 e
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 l* u; {+ ]* p' Q
// CS2,CS3
+ ~( [2 W F4 A0 u5 r; V0 c! O5 R GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, t9 L- H# _2 B7 Y8 X! ^- l/ l5 d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 U4 M1 ~% c- ]( u) p% V9 A/ @ //SIMO( T% {) [. B# k W$ M
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: b i- l7 {' |# m* Z
//SOMI
) v% U/ t/ @% `8 S7 l z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' O+ y9 i. [4 P/ q& x2 ]" N( x //CLK
/ t N+ K2 [& X7 N7 Q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# E5 ^( N6 l9 t' W& c4 ^
! F7 ~7 Y+ Z3 n( x8 {) \ // LDAC
# v/ q9 `6 _, N' P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
( [8 \& ~( h: ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. n! ~" @( ?0 {! w+ o5 c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- g$ w% \/ I! X6 L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! j! u7 l( V, A6 I GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY' [% x3 D4 o! L# o2 l; r
}) k& X4 \( T, S; D- R1 b
0 h* I3 R5 c8 G4 R( e. A0 Wint main(void)$ y7 R+ i+ e# r7 P
{
" w/ _( Y0 }3 x" J: U/ L; { // 外设使能0 v1 {$ s, H& Q5 {+ o. ?, c/ |0 J: N
PSCInit();
( J* ]2 Q3 c" }4 l$ {2 K7 d
' V1 V; l, N: i1 G 2 _: P( ]% r. j; v
// 管脚复用配置
5 j+ O+ Q. f$ a GPIOBankPinMuxSet();0 @3 m8 F% s2 ? U" k, {6 p
for(;;)- y( j% |, n3 g# y4 G
{( p B$ [7 I" ]" M# l" g
SET_SCLK();//时钟正常输出- t# y4 d: J! F6 r* _0 W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 V! X8 Y' l7 C' B! b3 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ o; H$ b" B" _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ D9 r: j# n' w
+ [ w1 ?, m2 S% W5 U# O) J delay(20);5 `! {1 A& H4 x, V. o+ s! C$ H
CLR_SCLK();/ V/ w& S0 ]" k( K9 v) f& F8 u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' V7 D, w6 V6 ^1 b7 `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 m8 K0 q. \" x8 q- y9 { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) ^( R. n; M, U1 T) J
delay(20);1 d( a7 A; a" x8 x
}. }$ `/ ~+ j; b
} k# a. ?6 {0 L
|
|