|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% L- d6 ^6 s! w$ k! F5 C
void PSCInit(void)
) z$ L6 E# T: S- W! d$ Y{- k2 Y7 Q z) s; f5 ?( ]2 @4 Q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 Y8 K( n) w1 {}. k9 F% O( Q8 _; C
: q* d; O! O" m7 ?% y; g
void GPIOBankPinMuxSet(void), t1 ^ j: P$ j' y' j6 A
{
+ N' m" {2 x7 _6 a // DRDY ------------ GPIO6[14] -- 111. B9 Q2 t% V1 J4 Y! S' F$ D& n6 B' q
// SPI1_CLK ------------ GPIO2[13] -- 46
4 V$ H, B' j3 G( P: C2 I // SPI1_SOMI------------ GPIO2[11] -- 44
. [7 M2 l! n- e8 ^# k // SPI1_SIMO------------ GPIO2[10] -- 43
8 B0 S j$ K, L+ y' I+ @ // SPI1_CS2 ------------ GPIO1[0] -- 175 w% T2 a, \4 \; r+ O N
// SPI1_CS3 ------------ GPIO1[1] -- 181 p( |, _0 ^; {3 n2 h |- y
8 e8 i4 y+ x1 v5 P: } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
6 V5 s% ~( q6 d- W5 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);: @0 @# l+ ?2 U9 p) _/ x" w- _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( \) j1 c" P" U: P4 c$ i) c
* D. D6 J3 E) E //DRDY
/ L3 h/ @& I& k; r9 E" J. l GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
- h1 T4 d6 M; d% t // CS2,CS3
7 |! W p9 I6 a: G' a* Y; ? GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' y& N3 o# g5 D/ ~2 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 i3 Q4 L0 I7 d/ g* _$ d //SIMO# C: t9 ? m. P# a+ y7 m8 b# s; Y
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* J/ @( F, ~* C1 y D
//SOMI: b! p! Y- _7 ~% R* Q' v/ a5 z. B4 T+ L' m
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
\: o6 n, S5 @" w3 ? //CLK# ]1 Z8 ~' d: c9 ^# A9 Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK: A3 X8 s5 s9 P5 m; `7 Q
X3 ?4 L* s6 U8 t! C
// LDAC
& ~. d9 h4 b) u2 p8 N' G1 b GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK9 \& ]) Y5 J4 C3 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 ]0 v3 C* w6 W: P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, Y6 H/ n+ u2 y) c/ W, u+ ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* _. D- g) ^) W9 k; p9 M/ `/ t2 p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ k' \8 x+ |. t1 ]) I, k
}- d7 f3 _3 |# y- X O- s. b
' R: @ a% [" A _; o% wint main(void)6 G: j) R& Q: z C# x. U% |$ i
{
) K: e7 u! H& _0 U @# D5 A) H // 外设使能
7 S6 [! N P6 {, k4 I% q, c+ _ PSCInit();" H( Y% R7 v4 a9 }5 z
. {! [9 D0 J) R2 P# D: `7 N
: T3 Z' Y# U9 ? // 管脚复用配置
' D3 w; Y U' b9 J GPIOBankPinMuxSet(); f7 V8 ]' n' I; {3 }- ]
for(;;)+ I/ O* W3 g& x C. T* w$ p; A
{- k9 M; B5 z: I4 ?
SET_SCLK();//时钟正常输出) o3 w; L* B$ ~; w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# y( q* k4 Y: g) {, i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: L2 R4 H- U2 S: w! Z/ M% G7 n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 q% X! P5 V0 W- X
3 I6 m* K& l3 x' B8 N, M delay(20);: V F2 z" s& e
CLR_SCLK(); n; _& X* d$ [: S# ~. |$ H. v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# I2 Y( M2 ] @' _* U
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* M8 l+ J& N0 a0 x0 V( R; Q! V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ h$ j' w6 C0 f8 x$ q; a delay(20);* v: O4 z. G) Z( P$ K* E
}
( n1 D; c" F( o0 Q' f}+ W7 M+ d% c7 L+ _( J: q) }' ^
|
|