|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 S5 P2 Y- D a! Q; c1 D
void PSCInit(void)5 b8 {' A! S$ D/ G2 k
{: z- B. E ^7 h( K- E, O0 p
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' Z8 `- b6 i9 D2 D0 h
}7 v! g" u0 s% Z
3 ]2 T& h; a% A: ivoid GPIOBankPinMuxSet(void)
9 @) Q( D; v# D) ? _0 Q{
6 r/ g# A3 U& y. i) J3 b1 d // DRDY ------------ GPIO6[14] -- 111
2 Y! ~ e, w ~* Y // SPI1_CLK ------------ GPIO2[13] -- 46
: q, D) u, A: @ n. W // SPI1_SOMI------------ GPIO2[11] -- 44, q: Y" K1 v- A6 t& ?
// SPI1_SIMO------------ GPIO2[10] -- 43, Y7 \( f4 I: M/ j) k {7 E1 p
// SPI1_CS2 ------------ GPIO1[0] -- 17
1 D+ O1 x) w+ {% n7 x+ t // SPI1_CS3 ------------ GPIO1[1] -- 18
% \) I. t% F8 v- j# R. ?" Q
' A# o- N7 G! O9 T: r; _3 Z+ X HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);, l9 F; W# W+ r3 _ |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 O$ V2 o) ? q" c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 I4 \& p$ l9 z- X+ K: D: @4 ~# c) M! K
//DRDY
) y2 w; R; R5 n: e GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( I6 w4 b7 n; w, J; }, _
// CS2,CS31 Z t3 y" Y) z( y$ T8 c! a
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! F, R" l" i* G" D) y \# s
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' y4 E# \( \. z" m //SIMO- |* w) z) r$ E7 T0 m9 M9 g# [
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 x+ S. E" Y* p8 y2 k( X* C2 j
//SOMI
7 s6 N* R1 C# R; \ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI1 }: Z5 M9 h' t D
//CLK
" U4 W; `# T; O/ }/ ]2 R GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 I7 Y" U& Z+ L Q# I, O, q+ O4 m N Z# q1 P4 g1 ]3 w* d; N# G
// LDAC. {& v% G% t5 l
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK |- s1 ?2 L. n+ f# s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 t! R+ J6 ^) h7 A9 @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 C9 p/ L) y: L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 F5 Y8 l5 W8 `+ ~) w2 z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
5 s& X- x# V/ b$ c}, K- @3 ]: z+ b- L
9 z- b! _! {& {
int main(void)& b M5 N* p o. q. P
{/ m+ j! [6 D! T4 B
// 外设使能
6 K6 @+ N9 `& @9 p2 I PSCInit();% @ m) B* O: \, @# }8 L6 S
2 G" s p/ {! { ' ~- I& B& U1 q
// 管脚复用配置
% X" Q' g* N3 Q9 v GPIOBankPinMuxSet();+ t: [- O& Y6 a6 c( h
for(;;)1 G7 c% v4 _& b9 \. l: [0 a- t
{
2 @; t) U& T# @9 b% K* ~0 I SET_SCLK();//时钟正常输出- D. S7 d% i, Y' S. M1 `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: i: m) F, N3 R$ ^& |+ l; [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* b3 b: c6 U) a9 X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; X7 P4 f" i) \5 |8 t
4 G# k& `( Q2 W V- S8 z- J& `! y
delay(20);+ O- T5 _/ r8 a" W- G
CLR_SCLK();
* |% R: B( `, v: A m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, \; }) s! S- n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
' x v# C2 n$ Y ?$ ]$ q7 x' N- ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 G: O" [; ~ o [/ D, d' R5 \ delay(20);8 T: t, i. A9 T# }8 n9 |/ t( u& H
}' T0 ^$ Q& M Y' A8 U7 Z' X, s
}- N/ C" E+ `' q l9 [9 L
|
|