|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 \3 ^1 b- C1 U5 x I8 w7 Hvoid PSCInit(void)* D( n' H2 q$ q* a6 k
{
+ k( n) H# f8 {" k- y PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 x+ u# {! \ r3 Y
}
" x O8 r) l8 p) [
6 Q# E; ` a) L' @. `1 |. O" uvoid GPIOBankPinMuxSet(void)
. P% @3 a5 V V& J{
4 P) J+ n$ K: }: b) ]4 C // DRDY ------------ GPIO6[14] -- 111
0 E5 f+ X8 R" s. j // SPI1_CLK ------------ GPIO2[13] -- 46
$ F3 S) p" d: p // SPI1_SOMI------------ GPIO2[11] -- 44
f l& }! ]9 {' D9 i6 n // SPI1_SIMO------------ GPIO2[10] -- 43
; Z+ q5 O5 q: G# W% `" f // SPI1_CS2 ------------ GPIO1[0] -- 17# X* P+ X6 z# `2 q
// SPI1_CS3 ------------ GPIO1[1] -- 188 w: p' s1 g: M4 c1 w
- t- F4 N# T# q+ }) h" x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ |0 t8 {: \3 i% w0 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; m. q7 W. o' K6 k4 K% Q8 [7 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) ^7 y3 R) Y. x- ~; b7 B
) }+ y: P* {# A+ |; X3 k- p //DRDY
9 x" r+ ?6 H6 r- f3 B. @2 k GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
$ p9 y9 U( f% k' z# U7 |6 G, H // CS2,CS3
2 V T" }. P& `6 q) c7 z GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 x2 o1 O2 _$ L9 }4 v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" G n5 S7 G7 e w- X3 C: i: T4 i1 a
//SIMO+ J+ w* t- B; ]- ?/ A" Z- X2 p/ P
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" q( \( i; p/ H% X
//SOMI
5 E9 M/ L% d8 E3 U# V GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI! L: _4 s8 X$ A8 R6 C5 g/ Y
//CLK
3 S/ C. b% x+ S/ O/ b GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ s- `0 G9 I( J2 V: P+ ?) P D' s0 X) |" A
// LDAC
, U5 X6 L2 E$ ?7 E, O, w# b+ n GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. R; L. a* }9 e) C3 G# d' U# V4 T7 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 ~- J7 q5 {* G$ r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 U/ b) I3 {" A( L/ C+ b$ x5 @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 [2 a# r" x4 @- m: v5 P$ z GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, c7 e* o* ]+ c) d% Z
}0 @+ K5 x+ |4 P6 e5 V. K
7 o/ [# t7 q7 [( t/ L3 Y1 A) c
int main(void)
0 ?3 i, \4 E: h) U{
- ~7 i% O* N+ D // 外设使能
! h' J) B3 H$ ^5 r PSCInit();, e% x4 A$ j2 c4 t: _! h
; _) k. K" G! J/ R; v
/ b# F1 G/ P1 h/ f: i# e0 B // 管脚复用配置& p" D+ ~" A9 @) ?" F
GPIOBankPinMuxSet();2 t9 v2 O5 }5 q
for(;;)
% V5 U8 p& l( u- _, O! U {; R- Q. n% n$ T' S& \; k
SET_SCLK();//时钟正常输出
; F, w: e" ` Y5 W4 G: k4 q" L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& [7 S% ]+ ~3 @" Q; o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 {7 m: |3 d6 i: k9 s0 ~% c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 y* T9 d% C3 Y- P: B2 q
* z2 l/ F9 }5 V2 C4 p$ ?8 Y/ J delay(20);
3 R- a3 N6 D9 j( n, q CLR_SCLK();" \# `) O5 a1 y4 J" n3 Z' o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
7 S# Z6 S0 H% @6 X$ P. w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3. {- F& a9 ?0 }. o3 c. u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 }, { A1 l& u
delay(20);
, ~: C0 U0 G. L) b6 q7 Q) E; h! c }
1 m- u2 U, k: g' y8 q/ z; E}
9 e" V9 f) Y, p3 C/ \ |
|