|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
+ k: {% ^: a! fvoid PSCInit(void)
- v5 c! e! q3 A% R5 A- I O0 p{
. w' Q* F& [; U PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 n6 |+ j8 p+ ?- `* C2 o+ z9 i
}
. C" f2 {/ ^ ]$ T9 |0 g
8 B+ T) T; t* s$ O$ Gvoid GPIOBankPinMuxSet(void)$ c! Q& e% {! Q/ D9 ^, `, b) v9 b
{
( v. `7 ?$ ^1 |3 c6 @$ }* o/ C // DRDY ------------ GPIO6[14] -- 111, P, R# G% y! r) b5 v
// SPI1_CLK ------------ GPIO2[13] -- 46% S C% U S, N2 r
// SPI1_SOMI------------ GPIO2[11] -- 44
) x$ A, C* t( i) D4 G // SPI1_SIMO------------ GPIO2[10] -- 43
' O! W9 A: w$ ^; K( s // SPI1_CS2 ------------ GPIO1[0] -- 17$ C, X) W) _4 v7 f$ I, v& _
// SPI1_CS3 ------------ GPIO1[1] -- 18
( G+ H2 j5 \! J4 h1 ] Y+ n" A! G- i x3 @% y- w( P8 r* V# a( [$ C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' B, @/ C4 I- Y6 v6 Z. {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
1 a% t7 w: x/ `/ z# }8 D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& u3 V4 l& P T
) k3 p6 H; L. l. I7 o. g //DRDY0 p8 ^ |3 i i% d. P; O
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% u6 [- Q' d/ e* _4 X
// CS2,CS3
' Z3 W8 r& D( t' n& B) p& H GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: y. D; S& P# L; X: K$ H/ z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ |. ~9 ]0 W" L1 c2 D
//SIMO5 C( M: W. k/ l1 w8 n, `
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO0 G! O! [+ u0 ^/ t/ j# d
//SOMI3 W- n5 u- q5 L2 s, g+ @3 ]: Q1 h+ ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 C8 [# Z$ \9 e+ }" n* X2 `
//CLK$ ~) |/ ]) q8 f& t( K4 S9 x
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& ~! S$ y2 @: T* `: l" B
8 ?6 m, {) N6 u7 u
// LDAC
: g9 y2 o1 Z% w: _2 @$ } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# r* P" e7 V% h# D" x) _6 d, O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 n& e$ @6 ?, j" \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: C9 z7 f4 U; f1 o( Z2 k( L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! k# D6 L3 F; ?3 u, x; B: j
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
) @ V m( K5 E S! Y% C# k1 Q}% f# I' r! l& p8 J7 _
5 V& p. G% v6 b" c% Fint main(void)$ m4 _( U$ L5 s! u- G
{
: m/ D, ?/ n( [/ f8 @( G8 L) V( l // 外设使能5 U2 s$ ? [5 T
PSCInit();
* n5 I) o$ ?: a8 a# [" ?: S! |+ u+ Z! [( G+ [
7 o5 ]1 Z1 Q8 L+ x- K" x, a // 管脚复用配置) V2 B% ?% B, O, E$ [( h
GPIOBankPinMuxSet();
; x" e; t: |4 [) D" e2 I4 N8 u for(;;)* q! U$ {7 Y- n# l- Z
{
6 x/ V/ |% l1 O8 Z$ @ E SET_SCLK();//时钟正常输出
. c% y! R% s: \" a0 T: x) z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& O1 H) c( w8 y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* n3 Q' x1 g/ [, \; |3 x( x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- ^1 K; @9 }4 S
, Y8 l, G s6 ~. F2 j. x delay(20);
3 Y- ^, O; W' U CLR_SCLK();* U4 W/ D. N) Z: p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% o) W5 A: v9 @5 s( G' ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ n! g- Y/ M' S" [9 k D2 d! k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: o( w" m; ^9 W M4 ~ delay(20);2 f! m" k$ d. C
}
) E6 u# Z5 M* z: [% N; P3 W}4 e/ j; X8 U6 [5 Y
|
|