|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. j0 X" d# m3 z' ^ y! \void PSCInit(void)
4 u& E- B+ k0 d0 b% W ^{- ]7 q r6 z0 w
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
, I, B9 {4 o A5 a}
5 b* m$ D5 K2 |* b/ G9 U
. ^% V1 B2 L, z& Fvoid GPIOBankPinMuxSet(void) R6 K( K4 p9 }
{, j# b2 S! ~" ~
// DRDY ------------ GPIO6[14] -- 111
# x2 B& v$ s9 t, v% V: F // SPI1_CLK ------------ GPIO2[13] -- 46' N0 i1 I0 @5 d1 d q4 F
// SPI1_SOMI------------ GPIO2[11] -- 443 q, ?' E" {; _& @
// SPI1_SIMO------------ GPIO2[10] -- 43
' n5 e3 P! i- R2 i // SPI1_CS2 ------------ GPIO1[0] -- 17
& y2 m% X! A1 H$ H. R" S- i8 E // SPI1_CS3 ------------ GPIO1[1] -- 18( y1 O5 E; G# H) Z5 ]) w5 z7 [
. N# Z4 B: q4 L) S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 V6 W" ^. d! S# J$ y* @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: o# R. c1 u8 L& `- y2 z( @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( N6 ]& @0 _8 y1 A! N+ o
3 ?0 P) a+ t$ i: Y //DRDY
" ~' f; i' V7 [9 N% A g GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 {6 E# N( k( N3 p: \
// CS2,CS3
+ D( M. |8 \# v0 a3 @- h& J8 D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 y4 Y/ o) B; R5 {3 ]" A GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
0 F/ f, R( Z2 X j- B& O //SIMO
& c. @# ~7 B: Y6 N! S GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. y4 l$ b+ b* J; P1 G7 O3 N //SOMI
/ V- d! V5 r+ H" u5 \ T GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 d! v' _- _. q) p3 I8 G* j
//CLK
Y* o/ O% ?- i% e {. @- H GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" l1 b* q' w3 }- B" ^5 u8 ~, }/ [7 B H) f
// LDAC* L3 O0 z8 m1 P g
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 [0 w& c, G$ n6 U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 c E( D- C o; V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 X6 z$ a8 X t' i& a$ |
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% `- J/ A5 d5 O$ r0 C- L0 Y- u
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
) J4 P, b# M" P N' U}7 n# `6 p' h! g. J0 C0 P' _, ^: l+ C
6 N2 V4 i3 b. _
int main(void)
' C# s* C8 F9 |{: l0 w( B! v% T! J0 W& a
// 外设使能- e; y$ s3 Y$ S2 H1 @: ^8 R w) n3 V
PSCInit();
; j. z% C5 V* s& T5 q2 ?) E4 L4 r/ I6 t
8 S9 Q2 z O N+ }. m: \. k // 管脚复用配置
% F" {6 l D+ t- Q. Q GPIOBankPinMuxSet();0 h& ]. X( A: R4 T8 Y% b; d
for(;;)4 `; f6 S' F( U a; m- `" O
{
! i4 A* { B+ W* r9 B' C; C) O; u SET_SCLK();//时钟正常输出1 k9 E9 r6 {( ^0 R C$ _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, a: w' `( l) g0 o3 V/ @* |' c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% K5 J" ^% c. ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& k9 x- {" \$ l
F4 q1 R+ A! v) u( X. r1 a9 \/ g
delay(20);
, E; `9 d r1 c! ~; L4 d2 A CLR_SCLK();" D6 ^* S0 }) [3 F g- z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
) p+ g" f& x+ J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* X3 g* ?8 u P7 k" \! [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: S3 r8 |1 b6 p; R0 s7 F+ z/ g
delay(20);
6 A; Z+ o: Q5 E }
& K' I/ O4 F9 [) g. s8 ]! R}- b5 w7 A0 X1 o5 G" n
|
|