|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( Q1 }$ g/ q1 C8 B( r! z% O
void PSCInit(void)& J1 V5 s$ H* X5 ?2 W
{. \6 |8 h3 ~; W: l& f0 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 E9 b! K/ Z$ j2 w" @+ p
}
2 y# ~. O3 s& B9 `/ o+ l: K o, [" B% k
void GPIOBankPinMuxSet(void)1 ]0 p; |" V# w* f/ B9 H5 b+ |
{" c; \5 e1 S# N
// DRDY ------------ GPIO6[14] -- 111
: |7 {+ b7 ^5 r `$ q9 O // SPI1_CLK ------------ GPIO2[13] -- 46/ t% u& U; ]0 Q; D
// SPI1_SOMI------------ GPIO2[11] -- 44
/ `5 s% P) Y/ {! r- k" S/ e4 N // SPI1_SIMO------------ GPIO2[10] -- 43
+ T1 u, y- R: e3 }# t // SPI1_CS2 ------------ GPIO1[0] -- 17
7 K$ }) y2 S0 B# \ // SPI1_CS3 ------------ GPIO1[1] -- 18
8 ~% ^* M$ Q# C8 Y( r0 \+ b* A- o5 h& F7 ~9 C5 w$ V8 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);! ^5 s1 Z5 Z3 Z( U$ U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 D c8 V _0 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% i1 k/ k7 \1 X- Q/ ]% i0 u4 J
' [$ N$ l3 Z I0 ^ //DRDY' G+ N/ A' \$ f1 r4 L+ Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
8 I! X% {9 o7 p9 l4 ]% m1 P // CS2,CS3# T9 H7 w9 A6 E0 l4 O% U1 K
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 y( K7 V m" y! [% Q* O( u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 S+ [" T$ v. F! n) K
//SIMO
% ]! v# W; D( i' O! d r3 _; ]: W GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( @( D. l" A4 i, `' `! [( ?1 i2 H //SOMI
# j1 K3 n+ W0 l( u GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' T' h/ f/ T7 x* ^ //CLK5 Y# u: G. u0 m, w8 {
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 r ~4 g/ b" E: Q; F: \
4 e/ v9 |8 D' n9 Y7 ?- J // LDAC0 F! R1 ~- `* Z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
F% W- N( v" W6 \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ e+ D$ c5 d$ y) K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 d% _/ X) \6 }: m' Z) x: D8 g/ ]. `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 u& e5 ?3 b A4 s GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY- q8 }$ A- I8 B% D- W# m
}9 j; i( }4 R& \/ z
* C: _6 D" V, [/ H: U! h! H! K7 Jint main(void)% Y: u2 |# \2 i) b. u; E
{2 \# {0 V+ a: a. z
// 外设使能. X' Z* S3 g% w& O. J) z% Z @
PSCInit();
& F* M( \) o0 D9 E$ ?0 g* O* n' E0 W' f) [1 e
j( V e3 d% T% ^ // 管脚复用配置1 x* ]( h9 l, _- _7 ]
GPIOBankPinMuxSet();
9 s8 i" I* x; _/ C7 t for(;;)6 o; t: K+ [9 x9 S4 y
{
" \8 z( T& Y; i9 |5 G/ L, x SET_SCLK();//时钟正常输出6 C3 E: c! q w' ?, T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
n _+ Q( _# N( h1 [1 K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS37 A8 K3 a ?* C$ s5 S& F, S, H0 p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# M d% s( X' L: ^* X
1 p1 W& D# f- K4 @! O' G" k delay(20);. d: t: r! n1 R# c
CLR_SCLK();
# o" W7 {( Z& x* I+ ]0 q( r/ w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 S; Q3 {+ G& H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- T6 b& u% D8 [3 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; Q8 K& r) A7 f4 U7 w delay(20);
6 S$ u6 H: a% M" Z }+ C7 M, ~( ^+ c
}; A p8 S; `- f2 s3 t: C
|
|