|
|
使用下面的例子代码,不能使SIMO和CS为低电平:5 e* Z# {5 L( l+ f6 k
void PSCInit(void). Y e" B% L8 F1 z; V
{, T& s/ r; _9 u6 `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# z* R# U8 n+ K6 L' h* i0 r7 g}: t' o( {# Q- {. H) U+ h
/ z/ x5 i$ p7 X- L( bvoid GPIOBankPinMuxSet(void); g9 l7 \+ m+ h1 f0 a2 l$ R
{
) h7 h7 A7 A9 j( x // DRDY ------------ GPIO6[14] -- 111
+ U/ A$ N& R! G7 p6 a1 ` // SPI1_CLK ------------ GPIO2[13] -- 46: {4 Q8 d9 h, l- o6 v- ]" A" Q
// SPI1_SOMI------------ GPIO2[11] -- 44
! }1 Z" M6 q1 B. t // SPI1_SIMO------------ GPIO2[10] -- 43# [( Y/ T+ `# n9 h0 z+ r- d
// SPI1_CS2 ------------ GPIO1[0] -- 17
X ^2 S6 T: n4 n7 p' j0 I3 s // SPI1_CS3 ------------ GPIO1[1] -- 18- y4 g2 c/ X z2 J( O$ I6 H$ D1 c
$ k. W1 y5 i' ?) W% b- D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ u1 Y$ _( T: h% |; ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" Q1 K! x- `* d, R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 x4 Y4 a" K, n' v
& {) @ p' F; W( F; Q' {* c //DRDY3 a, V$ ~3 C4 k. Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 h |) C: W( S( D0 L8 O0 K
// CS2,CS3# K, }6 D- N! Y" F0 I1 j+ y, q4 D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; B! ?( ` L4 `, A
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" v0 k3 k* F u1 {7 e! o
//SIMO( U2 X5 Y, P4 f+ \
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, }2 T W' @6 W: v //SOMI
7 H$ D9 Z5 v2 Z$ z3 d# r, s9 a% Q GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
; T% `" @/ _: J2 ?/ B* P+ C //CLK3 w' K7 y; g( F) b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) {+ C2 g, } E7 E
" _) S; c4 s) {1 K* g // LDAC
2 ^' N; ^7 n, n4 H) G GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) `8 g/ d# H, I+ V; u( w6 I; N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 M# O+ Y$ s$ R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( r4 j4 U) Z3 w8 g4 h) D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; S$ O+ v! I' ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# g0 K7 W! ]4 }4 @3 c; i: _}4 w* J3 M% u2 G: a( O
[% a, I9 s' ?2 p
int main(void)
. b5 t% J4 q6 \2 f& c1 H{ l: T7 ~# z$ @6 s8 n; W
// 外设使能3 z; C" O8 [! e7 R1 o& Q& A- t0 i0 H+ c
PSCInit();
7 K+ q3 }! B v7 y9 m$ h1 P% R
2 c, z5 i' @& A+ Z! ]2 i% A, z
) X$ i. c. H' K; @4 N5 j+ l // 管脚复用配置
; |6 e/ {9 t5 b' D3 @. ^- Z+ _ GPIOBankPinMuxSet();
; E8 V, l# b+ b; u1 Q! a1 z" P# t for(;;). v7 Z; D3 U' @6 K" [
{* D2 E+ t( V( ]' |) U, l) G# M R
SET_SCLK();//时钟正常输出- y- l7 q$ I+ k0 K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' ]% I3 i, H1 p. ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3. C8 D# U" P& P( O7 |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' B4 e3 F; ~. N
; |' f# j( N- k6 T& g' ^0 d; R
delay(20);7 o l! S+ w- d- d
CLR_SCLK();( s7 ^ S" @- X f% u1 a/ G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
3 N, E8 }/ _" V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- \5 Q# i/ l1 B* l" M' r+ S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 u( W' u- \. ]4 D+ Y- R
delay(20);2 {( B$ d* D# W
}6 g, \% J& |" p1 B
}4 ]: l- w1 B/ `6 \
|
|