|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
4 Y: D$ `, }9 a% c" ~void PSCInit(void). L: p: r* I7 M4 v& @
{
2 V- M/ z6 j* G0 S0 U! o PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
& c& S* m) e9 p0 I}
9 a9 q8 I q. q5 X6 q y- |" o& E
void GPIOBankPinMuxSet(void). t; Y4 s& o# ?9 i- `& }. x. p
{
' `$ k5 T/ L) a$ _% d3 y3 `- R9 } // DRDY ------------ GPIO6[14] -- 111
' V; L5 H) |! d // SPI1_CLK ------------ GPIO2[13] -- 46
2 E* C' j5 ]4 R) t! T // SPI1_SOMI------------ GPIO2[11] -- 446 y/ m! R% N0 L: p1 g
// SPI1_SIMO------------ GPIO2[10] -- 43
. X, o, F! x* Q2 f5 y+ C$ X' c // SPI1_CS2 ------------ GPIO1[0] -- 17
, ^# }* f3 m+ t // SPI1_CS3 ------------ GPIO1[1] -- 188 P2 y" I* o; i9 F3 T5 k
( z- Z/ j6 p6 e1 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ O, a( S7 t8 I: I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! z, u8 e- U) A! P y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) ^( Y$ T! e, w" t1 d
# t- J, x( l" u
//DRDY c3 C" \& _+ I
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 Y- U* I4 H) x // CS2,CS3
7 j4 |0 v- o6 h$ H% V' o7 \ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ s4 @9 a0 g& X
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 [9 W7 S. w" z
//SIMO
( l, i0 V2 d9 T2 S: s3 x& `' D GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
X5 x" z4 {# t l+ z8 Q //SOMI7 J' X6 I+ b4 W( o+ E; W' x
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 X# L/ q8 R) _1 o. z
//CLK
/ ]0 Y$ L! f$ W GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 G% r) }) z! y3 }' V: q' ^. R6 D% o+ I& j/ k1 p. N
// LDAC# j8 e/ ?+ Z# T( q" X# B4 D
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ b% a& q, x$ x5 r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% g/ u' \3 S) S- m/ r" L, Y* L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# f5 j" b, ^1 P" \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ X& p1 E, @. R% w o
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" e4 E% U! z" a2 ~2 }$ b& X1 A3 S}
1 X, F( m% G& B' q
7 B3 d- X3 y. H& iint main(void)
3 I, W, `$ h/ d; f{
5 D8 T* M; J/ q: K4 j // 外设使能
# M# u+ }6 u/ u2 j" ]: `. p PSCInit();
; f$ l" L8 b4 g$ J* u7 Z& `. I* V) ?+ ]3 h8 H' Q. J" l9 ?
( [; o$ _8 m" A, l7 H, O
// 管脚复用配置 t5 \% D. _ c$ f
GPIOBankPinMuxSet();$ A# S3 d5 S. w, e3 o3 D2 S
for(;;)
% C5 x! P' n3 b" J0 ~3 I/ O8 [ {
8 ^3 N4 ^0 H! @8 W SET_SCLK();//时钟正常输出
; y5 G; t6 F- K! H! `' s1 X# K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: x. W) J" Q" `% _8 J, ~/ w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 e* R5 ?: R6 L7 q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN* s, s+ v+ O7 Q2 ^
( C6 t& i. X2 G: a' {# S delay(20);
6 `* e+ n$ f& E CLR_SCLK();9 H* N& [( j; _& w1 g4 r! R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, N* E0 b! `9 t7 o* q" Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ @2 m7 S. i- A- v1 r- P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! T/ h* d- k& C& C: [& {1 ?$ T6 {8 U% P delay(20);
+ g1 Y+ g. l4 Q6 h, [9 F3 _( z" r }
% W8 `0 L7 n0 u" o4 ~& X}3 D; d9 P, ]* a: H$ `, q
|
|