|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ B* w( _3 r2 M4 Y4 c9 X4 V
void PSCInit(void)$ D( Z1 |1 u+ ]( ]- a1 D/ A5 V
{6 n9 \# h3 u2 Z' B& |
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 L$ u% Z6 t0 l& U5 V5 |}
& @7 v) Q5 J5 f" o8 E1 D5 v5 @# j5 {1 i! u( X5 ~% k
void GPIOBankPinMuxSet(void)& m" ~/ b5 `: B, l2 D2 W- N- x8 t
{
& t& j3 t2 V9 c5 S7 x // DRDY ------------ GPIO6[14] -- 111. O6 V r: @" x
// SPI1_CLK ------------ GPIO2[13] -- 46" z5 ]% p! s2 `
// SPI1_SOMI------------ GPIO2[11] -- 44) a2 D% ?& [6 [6 E9 ^/ `
// SPI1_SIMO------------ GPIO2[10] -- 43* N8 ~; \- l; l- ~" U& c% A
// SPI1_CS2 ------------ GPIO1[0] -- 17
B5 C3 F1 o+ }. b' w; |4 Q // SPI1_CS3 ------------ GPIO1[1] -- 18 `0 k9 R/ m4 v- ~+ l" n
4 A" k A: z x7 V" G5 z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);! d2 c0 q' {! l) ?. v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
1 ^ P7 O% |' @! R$ J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" K* n$ ]" \% Z3 s1 k' k" B! O! G# j
//DRDY
" X6 z S Z! e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY5 T! h! c5 t& H& \
// CS2,CS34 Y; z( n) L$ N1 z" M" ^. | v* z
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
9 _; R# E* n3 f6 G+ V$ } GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
2 E, B/ ^& h% _ //SIMO7 R. f" f5 V' A% I. U
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 }7 N% Q/ y8 T; M //SOMI
1 _0 @8 J' J8 R' A: B/ F GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 }% e' q' e, R. j' g5 {
//CLK
( B$ \. h! l6 s/ z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# ?8 J, Y* ^$ ]% o
6 l! w( q, e, j( a! y // LDAC l, L( V3 _8 p$ F1 K0 C: Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. H4 U9 P3 B+ u" d6 Y6 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 O+ _0 F' O( M3 h; `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- u: l5 ^( k# j; w- X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) r- h! Q7 |' N: s9 l' U4 w. ^; ^4 _
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* n) I' K9 a! Q; `* S3 b( ]# k
}
9 E0 I' x1 |* o5 |- G& _4 N; l* z$ h, g3 T. _5 o5 W4 I( s
int main(void)0 F$ ~( i, j# g8 F& v- ^
{% A! E0 c/ T; M+ h7 E; w v
// 外设使能- _2 \1 |' H2 {5 `4 t2 H" c1 d& E
PSCInit();% [# J8 g; w7 q) Z1 J& H
, ?0 X% W9 G: W7 P
6 z0 A( q H9 h# L0 I3 ] // 管脚复用配置
1 D3 v& r- m/ i7 z6 q# B# Y( O* x: D GPIOBankPinMuxSet();2 l5 O3 J" Q8 b% j: d! T' v I/ j
for(;;)
' p1 G h' @3 N! b n" V: Z: ~ {
* e# ]% |2 d+ |- J5 v% q6 W. c SET_SCLK();//时钟正常输出
9 j( o# `2 I' @+ K- z+ B4 o3 Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 b B+ m6 V _3 L1 @1 _9 ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- k* n" y# x/ D' X. |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 I1 s8 I" M" J( ^: W2 [
% l8 Y, J4 z% G8 m
delay(20);
' n' Y7 n' h' m CLR_SCLK();
0 V3 o4 Z- c0 X- ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3. W- z4 V, f0 s9 x" M& g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
# r0 v4 g% Y! G" J7 ]" _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 R/ s0 M8 t* u- I% Q
delay(20);
; P! R4 z1 O3 Q% }5 v! A2 \ }
4 H- l7 \1 S( @* N. T8 ^}
- \( d( l" S$ s1 ~/ y |
|