|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 t: M. Q; r' yvoid PSCInit(void)
9 V. T% Y" d" B/ V/ r5 `4 G, j{# H) m$ _ J$ P4 \& B7 z( }
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ O+ a0 L, V6 o' y; Y}; F1 R+ P/ y: s- r1 o' r6 B* Z
. P2 Y4 U% V9 ]' `: tvoid GPIOBankPinMuxSet(void)
* B3 A8 a* ~% N& ~$ |. c{- |" Z# G5 s8 b. {; G- l
// DRDY ------------ GPIO6[14] -- 111
( |' A1 {1 d) p/ x, B8 q' S // SPI1_CLK ------------ GPIO2[13] -- 468 K+ r& U, @- K, S4 z# p4 E
// SPI1_SOMI------------ GPIO2[11] -- 44
% K5 \3 P* t1 h% o. n) n. y // SPI1_SIMO------------ GPIO2[10] -- 43. u2 c- @* V) \; d
// SPI1_CS2 ------------ GPIO1[0] -- 17
& m @4 C3 v( |. { // SPI1_CS3 ------------ GPIO1[1] -- 18
+ P% a* G: s, B) `4 Q, w6 l _
b, T1 b; N5 D! t$ Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 a, \0 h X0 O1 I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; j! j" ^. f8 U- S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 z) M0 k# G! j9 {. m
$ g+ o( A' M; z/ `% u& x3 ]2 f7 c //DRDY' V, M A% t, i0 ]/ u
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; }4 R. W) ~* e4 T' O
// CS2,CS3
( O9 Z, `" S4 N GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ R8 J& |2 v* {. a8 n4 D
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 R2 d5 T. D) K6 D; a$ z& c //SIMO
4 M: u, R- U: _& S- z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( V4 d2 a! N+ A! j$ l, W9 D. J
//SOMI. E* d8 h1 \2 M& [/ p7 L! X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
. D0 Y: l E Y- U. t4 Q3 ~ //CLK
2 V% y) f' e7 y8 @. G; _5 f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 k" o2 e& A: d" V
; d- O% q9 s" a2 { // LDAC
+ r1 A8 S* P. ^* n6 V GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 B- P# |. O8 L# i e. a9 n7 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- I( }6 I& u2 M- A! j( | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; s9 T" q7 g$ d$ C0 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS32 D4 c( ?( `& z; {7 v" K( I
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY A6 R! P5 x, o" N: z+ C" ^
}
% z: @6 w# f9 b$ y8 ^6 q4 D: m
! N- ~* s6 P, R6 x* |' O$ C" _int main(void)0 K% S! {4 W7 o# ~. o0 s
{) B5 X$ |0 }! ?& L
// 外设使能
2 j! b4 k( j: a* Q; B, y$ T PSCInit();
6 @0 M _5 l9 s2 h, ?
) i9 E, q: k: y$ M# z" g( G Z6 ?1 P9 A1 f8 t/ q) F% K
// 管脚复用配置/ a9 {' U! | Q' R# }( T' ]( g8 D
GPIOBankPinMuxSet();! [; i! @& q: `1 K: E
for(;;)* l. l0 Q: L- S6 N8 j3 M- i' R9 c2 p
{
( {9 Z! ]$ \/ F# c, @) j SET_SCLK();//时钟正常输出
7 ?7 C: J- [" X! B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 ^( u* ~& m8 {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 W+ E" ~: h3 E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! O+ @* _, Y& t9 S! H
T. X: g# a; E4 z: b$ j: x delay(20);
( w* t. v9 s8 v CLR_SCLK();
* Y |# A; B$ Y7 F" K: }0 I2 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ z% A9 g. s. @) M; `7 A$ S1 ~' b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* {1 c' ~' g% t1 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 H9 z7 u" E" ^) h4 u2 T) T delay(20);+ l. O" n4 F) P2 [ F
}5 f& ~, S- ?7 K1 A
}( Q: D0 z5 M$ @7 [, L
|
|