|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' }8 k! b# C: x2 E) b. ~
void PSCInit(void), |8 W- Y& ?4 _+ G8 X: b
{
6 Z1 _ t" X) f) ~9 ^9 _+ S: Q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ e7 ]0 @" k0 S. s: J
}" {. _9 A: f: U+ { b3 ?
x: M6 k5 S; J0 I Z
void GPIOBankPinMuxSet(void)
: H* g7 b% l C{
0 p: B( K6 \. A$ g+ d% ?2 Z3 Q3 a4 o // DRDY ------------ GPIO6[14] -- 111
) L- q, U- \! e; i& B; _; L+ R // SPI1_CLK ------------ GPIO2[13] -- 46
0 ]* l6 v7 p+ q$ ] // SPI1_SOMI------------ GPIO2[11] -- 44
) F$ a& z+ e: U // SPI1_SIMO------------ GPIO2[10] -- 43
r( l( ~$ l$ ^2 p% I // SPI1_CS2 ------------ GPIO1[0] -- 17: f3 T6 u/ Z, Z4 x1 S
// SPI1_CS3 ------------ GPIO1[1] -- 18) v K |# N$ R6 t9 Y
2 B2 h, X7 T3 n$ F2 \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
0 [% d; i: l* K9 k( e: I& H: }3 c" R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 V) u! N% T. a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, A" ~2 J! R7 Z6 v# ^4 f& v$ u4 Q* q! E$ v% @6 `
//DRDY1 q+ B- x4 |6 A. C% p8 b. D
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY' _$ ~/ `" l% ~ v4 S
// CS2,CS3
, S) k- S7 [- ^ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 i1 b) y/ X# v( n& T- v
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
{& u$ ^/ R \; s //SIMO
4 H" C# }, y% P4 m$ k GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. U% v4 H: X5 ?# P! X! C3 d0 j //SOMI8 T" }9 F/ z! o; F q- m6 T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
`- l S( I, C+ P1 T, j0 N //CLK: A+ Q! a/ Y7 C& A7 q
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& G; Y" j4 G+ p; U& H# ?: i
! s; z4 n. S9 F- [
// LDAC
9 H6 g* y5 s. T# [ U4 j GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
( j2 {& a1 R/ [* C) s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 r$ g/ Q, z* Z( W0 e) Q/ d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: e5 ` o( R" A: @ {. w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 r, `5 d0 A) z- y1 e& o/ M GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
7 i5 k( Z: l9 T7 j5 R. c1 P}
' G) p- u( n6 u! ?9 e v
0 m s+ m' s6 s% pint main(void)
w2 J7 o9 o2 v$ Y4 m{
3 ~3 j' O. j+ E% T8 E& s+ u // 外设使能
( L6 C0 y' H, E0 m4 I$ W+ m/ p4 @* H PSCInit();
# c6 i9 A6 d4 l) T4 U. a5 Y; x7 j L% J. w5 e" O
1 E0 e1 X" w' e) z( j% A) v // 管脚复用配置! }3 {$ n& Q |- B' B0 j; H1 q$ {
GPIOBankPinMuxSet();
) R2 L" y, f5 [$ T9 V, m for(;;)
& A( j+ ^3 }% i6 G7 V7 i& W/ f {% M* z" ?% w8 ~3 K; J% l
SET_SCLK();//时钟正常输出
1 k7 j/ r6 V6 C2 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ g' ?' ^$ |" [9 m8 R9 b& Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3% r' H$ ~$ y8 s# p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 w1 L5 E" {) a) e1 B* h2 A! |8 ]" q1 i
delay(20);
/ d& O, u* C: m$ f0 O CLR_SCLK();
$ m! h6 u% a4 K. @6 G8 b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' f8 y' [/ ^! C F+ s( {( X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 B% `. X1 P9 k6 L5 s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ V3 G1 v5 ]3 z& ?: K9 r delay(20);
% I) e* N0 r7 y$ Z, O* x, u }
$ Z* g9 a9 s9 c* |8 ]8 T}+ V0 Q! J) O& ~, Z/ e
|
|