|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( ]4 N- E1 G: m5 ^/ @void PSCInit(void)
8 `* |& W& ^+ b% U" K' }{
* v1 ~. M; f) y, S PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# H0 c ]: ]8 U0 }) N. o}
; x1 h# M* J0 B% s8 m+ E: |* `- b
* W' y4 W: p$ R5 uvoid GPIOBankPinMuxSet(void), f/ I! m8 `% {- ^( x
{
: @; U0 J* O) v# } // DRDY ------------ GPIO6[14] -- 1115 F- p. k/ N h i5 k1 G
// SPI1_CLK ------------ GPIO2[13] -- 46* i) m4 m. F* D* q
// SPI1_SOMI------------ GPIO2[11] -- 44
: z: I0 H. L6 g0 N* P$ w8 O, c- \ G // SPI1_SIMO------------ GPIO2[10] -- 43
5 N6 Q# f5 V6 L! u, z: p+ Q; @, R // SPI1_CS2 ------------ GPIO1[0] -- 17
2 a( ]: B( ]; p9 J // SPI1_CS3 ------------ GPIO1[1] -- 18, u- Q1 k" U2 r s
) N, B+ V) a9 c# C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
' c1 ?' P K" ^* K" D7 f1 R; [' ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% p" O$ X3 S$ q1 l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( g) \" \8 j n; K" `
; A' N, H! Z% b$ a5 C3 q //DRDY1 I# V2 t. Q: z' J+ `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) m& @$ \. P5 {9 z
// CS2,CS3
+ C$ L }! x n3 T GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 Z$ }( ~4 \6 N- D# ]0 K- T( M
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; F5 u2 x; N7 \" v9 d9 O3 }
//SIMO9 | L7 z; S$ s1 U% x( [" O1 D8 q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
) L' c5 D! R& F; ]) ` f //SOMI
r) ~5 i0 @* u0 N GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
; M8 m8 V+ ?' E( D! b8 e //CLK
0 s' z6 J# Y( c$ j/ n) F# G- G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 @" l v5 n+ \( V4 c
/ t! O' Y8 {& X! l0 e6 N6 h // LDAC& [2 a9 d& L/ t6 X8 f
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ L# f5 [0 j& U- @& k4 L; W/ e2 Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- m3 w( H+ Y2 S$ r; y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# C) d$ k/ { Z% O& x% k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" X7 p2 Z$ n: O GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ z' ?# D6 o" S: L+ F& p}
0 x4 G9 q' n+ i( g+ D: I% y) k
C) x) |- t( J4 iint main(void)1 d3 l, W3 W6 j
{
* Z8 U2 N) T. H6 r# ^ // 外设使能
- p/ r" J8 X0 K* R" U/ H PSCInit();6 u* v' Y( U3 B4 X
. S* A% {) l& O8 d- q) x
0 u) f1 o; I& Y7 c& z // 管脚复用配置
3 {" {) B4 ^% e# g" [ GPIOBankPinMuxSet();
2 m5 A: @, A! F. u for(;;); I6 W2 r/ J M* D2 H0 f) u
{, y M- B' B2 Z7 }# \
SET_SCLK();//时钟正常输出8 W/ l# a/ ^6 Y2 l. V4 S: Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( t- {; _0 [( S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3# X# Z, e4 T8 z& }1 K1 G5 v: q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- j8 ?6 ], q- z+ h
I3 `4 J/ k" g5 h' D) X delay(20);5 a) Z3 C, ]+ j$ | D
CLR_SCLK();. b; _5 d0 _* R6 y5 p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 ?/ p: Z+ ]$ \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 A5 |4 J3 ~) |5 D+ G+ {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; I8 n8 _# @- {/ m3 S delay(20);
4 T7 t9 x0 f% ~" n5 v6 \ }
* \+ v0 F- I4 k8 I' H4 |9 Q" C}$ _& m+ T- ?& L* ], [3 c
|
|