|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. n5 w$ q/ U. A" uvoid PSCInit(void)1 i3 P) b$ j c) }
{- h& B) C7 p2 i6 y+ x6 r. ^& O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. l; w1 v8 r3 x" {+ P
}
8 v) k6 G) I7 r4 e, H1 N7 H/ {/ `, r7 A0 W% [
void GPIOBankPinMuxSet(void)
9 I9 [* h" D& Z0 [{! g8 E+ p! b, K* R
// DRDY ------------ GPIO6[14] -- 111% a: Z9 ^6 d4 Q' I6 b7 C
// SPI1_CLK ------------ GPIO2[13] -- 46
7 f/ h# r5 ~" a3 q. W // SPI1_SOMI------------ GPIO2[11] -- 44
% g Z1 g k s6 k" a+ W // SPI1_SIMO------------ GPIO2[10] -- 43( c# ~+ L( p. W7 e
// SPI1_CS2 ------------ GPIO1[0] -- 17
& }; Y. r3 l! H* ~6 o, T // SPI1_CS3 ------------ GPIO1[1] -- 18
8 z8 ^( x# a. i2 X- B2 i5 P
. f' A* u* p- G4 F; d8 Z/ y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: C% b t' l u7 T- c1 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
' ~' |+ [! S: u( T, q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 Y4 M8 v. o+ `* A! i1 |5 U) w; l! G2 |% z; E" }$ c
//DRDY
. f4 @4 m$ t+ R' Q; _4 o5 A7 o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 h k" n6 J, e; A8 q) H) P // CS2,CS3
5 F7 c7 T5 T5 u. f$ Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' s" e0 D2 D- b GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ [# O# [6 t3 i5 G; g9 J6 L* n //SIMO2 D+ ?6 }" g$ m/ Z8 \5 R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: N, q: J$ ~; P+ c) l //SOMI: J$ M( V. [) o" s; I
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, p4 o/ n) k; k+ Q1 b: O
//CLK
, H6 U* C( ^. ^ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 K$ o0 p1 t7 S
+ N& N: E) V M/ S // LDAC
, e; b1 |/ {8 \. A GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" K" G, [1 l3 r6 \& i1 \9 P; Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. y0 W7 A' b1 u5 ]: A* i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 H( f% o4 [4 @, J, x
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 l' F3 ]: i5 h, I( S
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 N3 L, V5 G [; l
}$ `$ }7 A6 @# f
/ n. P- [; a* ?/ Tint main(void)
# `5 G* }/ ?% G; U{
" P7 g2 x. l( w* N3 Q% A // 外设使能
R) q0 S* a* D/ n7 a. a0 u6 g PSCInit();6 p2 d! I* ^/ g* V" ^: f
+ g6 W2 H6 D; @2 Y5 W3 D# G 0 f7 @+ j2 ]' t3 l l, [" J
// 管脚复用配置
; u. ]9 o' V5 j, A4 ` GPIOBankPinMuxSet();
% o9 X" g, o5 Q# e. l/ g. y for(;;)
p4 Z* A# ~, ~1 p9 D {
$ P# w% C% u9 I, ?$ T SET_SCLK();//时钟正常输出! r9 e* n H$ ]2 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' c0 [( U( u5 W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 Z' H1 T% u- ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ a) w5 W! i) j$ s3 Z" ~# `
& x0 `* v7 j5 [2 Y" P4 O
delay(20);3 Y) a( F' r1 [9 A) }7 {
CLR_SCLK();% S, t: d( ^6 c2 |& Q l H/ i6 [2 e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. q0 j& O0 }3 f& s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! K; Y% S7 \+ S" m4 D7 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# K9 z. b: Q( |( g9 i5 i, ? delay(20);0 Z" L5 O0 {/ t, {' t$ L: i: ~
}
, {: O# n: E9 N% k2 t% F4 ?}" @, |- _9 O& c2 _! ~7 I
|
|