|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, }! s) f: B; V I
void PSCInit(void)) N5 T8 e- U m( q
{: [5 K* j( u* y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; I9 S) [' `3 `, _
}! N8 a: }/ U7 u# Q& J6 b5 X
1 r2 q2 d8 |% W# g; f. c8 B \1 ovoid GPIOBankPinMuxSet(void)
' C# M% k( k4 g9 z0 t( J{
& e: o# F1 x: R2 G$ z/ P // DRDY ------------ GPIO6[14] -- 111- F3 U; U) {& T' K( Z
// SPI1_CLK ------------ GPIO2[13] -- 46* Y. u8 L& s* L" W5 H
// SPI1_SOMI------------ GPIO2[11] -- 44
) }. z. {4 B6 ^- W8 k+ e1 k0 c // SPI1_SIMO------------ GPIO2[10] -- 43
" T: A0 o4 @; `' C% I; x" S // SPI1_CS2 ------------ GPIO1[0] -- 17' t0 f( Y4 {! ]+ L/ ]
// SPI1_CS3 ------------ GPIO1[1] -- 18
2 ^/ g! e! L9 c* j0 {5 z$ D; {: z3 r4 C, Z9 c$ M$ N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) B: s. S3 D2 B# V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);$ m) S7 Q( T% s) t4 B) J8 {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' B( e4 ?* ~( d$ F0 d( G1 a+ T+ o7 J+ X b# j
//DRDY
- J K, r" l v( V6 P- U3 C GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" ]8 [1 N$ t& l) O/ S5 ^, A // CS2,CS3
: C0 [" b/ }- W5 q; h- B* d GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) V& f" j4 _; D- u GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ U7 i! F: e8 H' s //SIMO4 _6 T m& F$ E' N* c
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ F9 z k* M/ }( m/ u( s2 C! S
//SOMI3 w7 r4 i% K$ B( I- P! S
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% q( }7 ]; ]; @( w( c
//CLK. o. P% E! n0 z/ A" z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ @3 E8 ]. Q: K$ ]6 b& p) L/ I4 _2 Y( n! u
// LDAC
7 {4 T: [4 j) J" u GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' O. W4 a$ |+ `+ @6 z8 A" o/ {6 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ a- P0 s' B& F4 p b1 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- |8 R6 l; m" y1 l2 m N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ O' ]- t) B4 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- U' f/ n6 w3 h4 P; G. Y5 n2 l}
2 C! N. K+ g- \* \
# P: J1 t1 X5 W3 Uint main(void) @5 Q; c. _. e
{6 q! P7 U$ v8 Z1 w, X$ r+ r- e
// 外设使能! e" ~, G- Q5 O$ _5 s
PSCInit();: s% z7 ?/ r6 R j2 @( ? {% q
3 S6 x/ ?% e1 h& l# K! S# o
1 Y3 o& w; s% R! y ?1 h; E4 B
// 管脚复用配置
3 w8 W) v$ Q& X! x GPIOBankPinMuxSet();
$ j) V9 B* P# r0 _4 C1 y for(;;)3 W! {1 n% ^) S+ }! V4 E7 i
{
% m, v: F" u( U$ G6 Y7 R: c" F5 S/ p SET_SCLK();//时钟正常输出
" J2 a2 M* Y* h @% \# z& w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- f! ~8 t; r% j, r0 D- W' V P' @3 n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- v" g/ P+ X2 z) v7 X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" S+ U6 i+ }* s* M" }" A
3 B- S; @5 p% Q# Y delay(20);9 }: J$ ]" x# j% ~4 v
CLR_SCLK();
q6 m O/ O; B/ n: i0 t, _/ s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( `2 \) ^4 m% @( L; W# Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3) f7 P' G+ M$ [4 _0 f- S) A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 ~: r2 L- H4 A: U: ], `
delay(20);
6 K3 e0 S+ m+ } }
5 s" b% l" s* R' U}
$ Z# p# ]3 Q2 p+ @ |
|