|
|
使用下面的例子代码,不能使SIMO和CS为低电平:) E1 p( o3 X; _& _& s3 F* U
void PSCInit(void)
# x3 L1 y% p. {. @5 x6 H{
$ R2 i& B2 n* D" \' Y# u/ G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 T9 }' w; a7 L# I
}
( g* {& Y" H* k8 R0 ]7 b1 [
6 c! P' W$ p' `void GPIOBankPinMuxSet(void)1 [! _% a* [# f4 z# J& q j
{
; J) W/ _9 B1 B* B // DRDY ------------ GPIO6[14] -- 111: r8 b: U2 {) K; }" m
// SPI1_CLK ------------ GPIO2[13] -- 46
; y s2 L- \! z" y // SPI1_SOMI------------ GPIO2[11] -- 444 s1 ^; G1 p. J% k* V+ q h" m
// SPI1_SIMO------------ GPIO2[10] -- 43+ y2 e* S7 n) v% f
// SPI1_CS2 ------------ GPIO1[0] -- 17 W1 }+ E: x% i- R) K6 ?
// SPI1_CS3 ------------ GPIO1[1] -- 18, z3 Y! L5 B; j( y2 J, b- g6 V- R
( O+ K) W. }2 G8 W# @, w& ]4 a$ g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 S- A$ f: O" A& R- U8 n8 p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ E- }) y- s2 M9 Z6 d1 V- L( p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ m+ F/ x$ m, F& S
& I1 M4 `2 i- D1 Y" C0 g# m/ M
//DRDY
: O$ g" t1 [: S' S- Y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 y @0 q/ V8 O3 \6 B3 p" `6 E; } // CS2,CS3
D9 U( u7 X- I+ p GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. f, ~: k7 ?( x GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 [9 Z6 t4 H, U Z5 n
//SIMO
6 ~) n5 R& _1 h q% n GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 k( j# \0 p) i
//SOMI
- \8 T/ h+ r9 I+ G: {! |2 U# T GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 ~( c3 @( `* a/ H! {1 ~+ G //CLK" f- \$ J3 S/ ~+ l/ l1 L9 k4 J
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ s9 W5 }6 D8 F# p2 |
4 f9 j8 u+ S5 |( V // LDAC
, t2 j O; d8 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ H$ B5 I7 M5 b, I: b R) s$ O6 a. z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 B0 Y2 B$ T* A3 d8 S# ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& F6 C/ v% S. `& {2 ~0 }" E) n1 V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
; t [: `' i- g& }$ j$ v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 P% ~) [; B" Q& O3 y}( R) Q+ h9 R+ l K
# ~1 a% y5 F6 v4 L$ f1 |int main(void)
- B4 q+ I$ C! o{
- j$ w1 Y" ^% a; q d2 M% e/ U" z // 外设使能
# q9 A5 O4 W# Y) v- w' I5 ^$ h PSCInit();% p, f: a G4 S4 Z
$ \' o3 f% M6 t& @ & V9 U$ \( R l' `7 q( u
// 管脚复用配置' g6 W8 l: t- X8 X
GPIOBankPinMuxSet();
1 k4 q- i" D2 B) Y for(;;)
/ B! O% \ w, t9 z {
' u: U& a0 H1 Q SET_SCLK();//时钟正常输出; C* O) c, U, z3 L% y* }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 o( L8 U, Z5 @7 w6 c# A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) Y! [5 N5 t8 D8 x" m% K; b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( a% {: b- s0 ^6 a& w0 Z
# m4 d& a( |6 O" I/ D( O( ^ delay(20);8 X# K) \! }9 z$ a$ s% j
CLR_SCLK();
* p% m4 V7 r( a8 q/ W$ H! L9 P8 S: L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 f7 r% k7 P+ q: m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! z z; b/ ~9 Y1 G, G) \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN M E v) d) P8 R5 f+ \. n* g( v
delay(20);
s4 J7 m; f7 A) Z5 q' ^+ \( k }- A6 T. G6 g9 |/ s
}- |6 v) R) @) D/ Q
|
|