|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
8 \3 e2 b( L% Cvoid PSCInit(void)8 o5 I* f* r9 A# J5 V% g* b6 V
{
. I! Q2 g1 y! V( b PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
( M5 ^) u) W: Q9 A- k) b8 D' m' l}$ I- ~ a. I. }# N1 ? B4 ~
8 b1 d! B# D3 c. I5 d6 p( c# }3 W
void GPIOBankPinMuxSet(void)
6 t T! a+ W0 |* u: g{
9 D' z# q1 k9 x // DRDY ------------ GPIO6[14] -- 1116 z0 B' v( `8 n
// SPI1_CLK ------------ GPIO2[13] -- 46! a2 W) I5 w3 @, M2 m7 j
// SPI1_SOMI------------ GPIO2[11] -- 44
& d, ?6 X# Q% m! p _# c // SPI1_SIMO------------ GPIO2[10] -- 43# ?) a0 c; w+ c6 U
// SPI1_CS2 ------------ GPIO1[0] -- 17
+ e# E2 z0 E2 L+ Q* } // SPI1_CS3 ------------ GPIO1[1] -- 18
- B+ `' {) f' v# Y c
5 p" Y9 C! T4 e; l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);$ c. j+ G* v( o" K, ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);$ e2 I( O8 J" T; ~: n D; L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& g/ {+ k7 K: @' }- `1 B {1 T1 H
9 r& \9 i9 ~ ~ //DRDY- V. k& j% z8 D9 m. ~3 }' G
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY0 u- P! }& q/ a3 ?2 J% f9 h m
// CS2,CS3, t* R, y3 T0 q9 x
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: J, e2 r* @3 }+ b0 @: n: A GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
; c2 c7 c% B/ h6 i //SIMO# z' {# G, }: A( P6 ]0 P* z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& k3 }4 x: A) ~. [
//SOMI
3 k1 j7 U7 J, R( R) [. N1 B GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 w! I* R3 V: | s% X
//CLK
2 P8 j8 y/ O. t; c GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, J1 t, n$ j5 E3 ]! d
* G9 i" r' I8 |% e // LDAC1 ^4 h1 E9 p3 l7 e; n8 m
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 v* W) J8 ?! @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ g3 |* {- {) ~( S* P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 p+ P/ @) [) g* e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3- j' v+ d: e( Z4 e8 X
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ e" n. y1 D6 a% y
}/ m, T( a8 u- W" @- K) u9 B" B
! T6 A5 E. V' v! G p# R% yint main(void); p% o# N! I" {2 k E
{
G1 w+ C/ v4 D // 外设使能3 N( k& ~; @2 E/ w5 o& a' m
PSCInit();- i0 q& n+ d) c1 R
# g4 p% y4 |' a3 F2 E' ~' `
* p/ S1 T5 r. ]8 y- e6 P: s9 z
// 管脚复用配置+ G& Z. Z$ O! N# e) N
GPIOBankPinMuxSet();/ h$ ]) Z, U$ j! E
for(;;)
' ]7 L s b2 i- p' [- ?4 | { A5 D; y2 {& H- A5 X
SET_SCLK();//时钟正常输出
3 O# D! j/ [- h# F. m4 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( X7 G' l, F" }% b1 l( G- C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3% j9 }+ J- g+ [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ U- P$ X# l( `$ p. Y# w% S( c$ b
! j+ ^* M$ y& H6 p( k. O. { delay(20);- ?$ B2 f; o; U8 i/ Y5 w" o
CLR_SCLK();
$ b' c" C5 A0 C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS38 E( ^! T8 Q. Z9 _ ~# |2 \5 x9 r; M' s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
) b( C! X- K6 \2 u: `$ h; r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, p( m8 x& H& I: q: A* h
delay(20);
: k# f) N3 o1 e% O/ O }
: _- Y* P4 x! O* C) v}
5 D" H! {% b) Q" \5 l! o |
|