|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 W. U9 r+ U8 v: s- T& ]; n3 ~4 ovoid PSCInit(void)0 W$ n/ { Z# `
{
1 d- ~- A( h a; b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 e7 {; z( ]( i}
7 O( V' G" H, M" Z
& }8 a3 m7 `9 Bvoid GPIOBankPinMuxSet(void)
- M0 ` u9 B5 `8 T" g6 {5 W- v{/ ?& j; Q ~5 ~+ Y- X$ G
// DRDY ------------ GPIO6[14] -- 111
% E& V( A/ a1 p7 L% Q- H // SPI1_CLK ------------ GPIO2[13] -- 463 ^& y7 n) P; u5 L! B
// SPI1_SOMI------------ GPIO2[11] -- 44* l5 n+ F' l8 k1 V
// SPI1_SIMO------------ GPIO2[10] -- 43
" C; ^3 S8 }; F3 x( H* L/ S // SPI1_CS2 ------------ GPIO1[0] -- 174 y9 W; V( J! q4 H7 w, d% z1 }/ `
// SPI1_CS3 ------------ GPIO1[1] -- 186 \( Q5 c G+ z; `; [' G2 _
! R( ~1 k( y: v. |; b& O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);$ o8 O$ ]+ `- ^4 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" r) X P) D T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);9 t. s: F+ }% O9 A# X; H# p
1 [3 @; O- _$ F4 b& z9 K
//DRDY
' W' [; o$ c& B9 Q, v. P GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ Q6 p% C+ [4 R // CS2,CS3
; e. ?( L! \$ r8 x' h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& c( ^5 ^$ Q; A! V' b i* M6 k3 A E GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! E2 X+ ?8 d- s4 _8 L3 u
//SIMO6 j) L* T9 U3 H" P
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
1 u9 a7 H; t k) f //SOMI
8 }# F4 ~' D; V GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. ]% E1 E$ M! p8 p) v1 z) L3 h
//CLK
) T4 r) I P0 c; U GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
V' O0 G+ z$ n: e8 m* Q/ Y+ a' t" w2 M9 C7 t2 p: n
// LDAC( A; }8 |# n: f; V% d9 b, }9 ~: ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 k L6 O0 u! X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 _& F+ e( e8 q6 G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 y5 d3 a" h2 J5 U/ Q7 _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) R4 J$ `4 R* t' R8 f
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
8 D0 b8 J/ e5 y2 u/ D z5 i4 n4 Y3 O6 u}
) Y9 x# w) K- R8 P9 Y: J. e
7 S& |2 f6 s# w2 Bint main(void)& ]( O. O" z# g% V+ Q! ]
{: i, g1 z7 X- V9 z4 H7 n, w% f, i- S. Z
// 外设使能
/ H9 q4 l9 g, j# m PSCInit();
+ V* K- w: z7 p! ^. M
) u% y" B3 J' S; r8 f 1 [3 G' s Q* s: T
// 管脚复用配置
3 f9 k& L9 ~$ `4 }1 [: t: u1 j GPIOBankPinMuxSet();
+ @3 R$ v: W, [ for(;;)
% m% C% ^9 X! K V# Y$ o* ~ {7 f8 w5 Z6 C+ Z
SET_SCLK();//时钟正常输出7 Q2 r! l, |# b3 @, v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' j: _1 n, `/ U) t( A J! H: S1 {8 q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3. L/ X/ f( \. C# O2 j. o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
: ?" [4 N1 R8 Y& _4 k, p+ `
, g' z9 e6 M: R |- u delay(20);
; u y0 N1 v; n/ X CLR_SCLK();4 ]. k# [8 |5 }+ s J- t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 ~1 y- F+ p- [; i' U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 s2 ~. I& W7 p# m' g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 P" R5 _5 {0 ]" T% v, Q
delay(20);! P9 [+ I$ o" k% z9 U
}' _' l/ x& b( R; R
}
. P8 q9 ]2 ?" m' t8 I# e |
|