|
使用下面的例子代码,不能使SIMO和CS为低电平:
. q& v" Q: k J \% G, Y: fvoid PSCInit(void)
, I6 ~6 @5 R6 x5 s% e{
* N) M0 l; m6 Q% ]3 E5 W) h) O; V PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% V3 Q" {2 f1 {
}
2 s; o( l! C! Q" [, c2 r$ S
& @1 W& O2 r Ivoid GPIOBankPinMuxSet(void)
# z+ Y1 ^8 O! M# d9 Q{ j5 _. F3 i7 |& _' Q
// DRDY ------------ GPIO6[14] -- 1118 J8 u; S* ?/ c
// SPI1_CLK ------------ GPIO2[13] -- 46
0 U, H% Y) o, X9 o" w. L // SPI1_SOMI------------ GPIO2[11] -- 44
" @2 R5 ?( ^$ ]) l: p! v // SPI1_SIMO------------ GPIO2[10] -- 438 o% k) B/ i5 z
// SPI1_CS2 ------------ GPIO1[0] -- 17
! o _ l# u& L$ b // SPI1_CS3 ------------ GPIO1[1] -- 18
3 H, I! I* x k5 W3 `* `( j
5 ?" |# @. Q4 g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); t9 q/ Z) p: t. S# ?8 r, q- ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. S2 X# O$ ~2 X$ Q7 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' ^4 N7 s5 j* Z/ c) e. ? S! j1 | t- @* j7 T# s
//DRDY
8 {3 r5 H! ]- h% y; e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 x0 b0 \# c v9 e- o: e2 ? // CS2,CS34 T* O. P/ ~: M
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
9 `# ]+ o8 p; x5 h. a GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) l8 }6 Z; V1 o- J //SIMO; b9 E, K9 I0 a' e/ M/ o
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 b. n6 s& F: A- T
//SOMI
! { v2 M5 e# W% W GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ A/ H3 m! C1 @! Z8 o& L //CLK! ?$ b8 I4 S' S1 j) Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 O- U; h% v3 L' `
. n" O; n1 @: R/ }+ V( F. b8 v // LDAC2 P+ ~9 F) x2 B' Z7 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- J# }' |" N' a H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN B# @" |' z2 ` V- Y* v) q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. S m3 X; y- K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ W- O* x% _+ X. A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 i( i) o8 P9 Y/ M0 R}2 @ N4 }- B7 Q# S1 `; W
9 v8 }1 w4 d" _int main(void)
?) h! Z: h! `1 f; [{! z! t+ o2 g( k
// 外设使能
. S: M2 ?' @# `9 | PSCInit();/ y: {* _0 x1 Z" c
5 q8 K7 |$ T5 ]3 x. X* ]9 R & L2 e- H) d7 e# g6 e
// 管脚复用配置; {. Y+ B: U9 m( q
GPIOBankPinMuxSet();
" u3 B! D$ m: T$ ? for(;;)+ n' X3 n t9 l; @, d% c# c2 w2 C
{
9 c) W! F4 H; O8 @# ?2 K0 q7 s SET_SCLK();//时钟正常输出
5 |, M. A! N- i& ^( K1 \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ U% q R( a8 _- t3 A u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- f! {% d) b" d5 R) O1 `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 F6 _8 v8 [+ q: Q; v1 ~1 n$ ?; A. p5 J
delay(20);/ R3 P. ^" W8 z. W" X
CLR_SCLK();
1 l( `6 v" g/ ?' v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; ~5 i0 q: C& U7 U& W* @% I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, C d! H |- x2 q# o! w* M/ ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! m$ r6 n( o' [* M" z* T0 |
delay(20);7 G C. W; H& i" @+ [# S% S6 |* R
}
0 |8 _) r4 R" d$ b}# n1 T, r- g0 a
|
|