|
|
使用下面的例子代码,不能使SIMO和CS为低电平:- s. a& J! [0 H4 {- z& U6 B
void PSCInit(void)5 h9 O5 B) u1 e7 Q ~ y
{
5 G7 B ]; c7 x6 S* D! | PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ N3 n( ^! B8 N$ j7 f$ d7 v
}1 o5 H. e1 V, |# a2 t0 V
$ I4 B$ R9 V9 C
void GPIOBankPinMuxSet(void)
) N m2 j: ^% Z2 l{
' I7 R7 N! b8 Y0 {! S0 s4 `2 i // DRDY ------------ GPIO6[14] -- 111 T# J8 A8 L( P+ t
// SPI1_CLK ------------ GPIO2[13] -- 46! P4 f+ V! `0 t% c+ n. m
// SPI1_SOMI------------ GPIO2[11] -- 449 M, d' l$ x% l8 b
// SPI1_SIMO------------ GPIO2[10] -- 432 M- x. K( F: Q
// SPI1_CS2 ------------ GPIO1[0] -- 17
7 H; ^) K1 e: Y! g" V/ W // SPI1_CS3 ------------ GPIO1[1] -- 18! _: S7 ~( }# D$ P/ p
9 @+ A$ U+ M( P @( u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' [* d# Q" x# O- X. |+ P% A1 [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; l5 ~4 C, Z& E6 D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);0 q3 q; `1 K! L, a! A
) E+ d! O5 y1 c6 i) A //DRDY
: v" e( R" z3 H% A$ K' W GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* I& ]5 P; d, i/ g
// CS2,CS3
- H6 i3 ?: p4 a GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 E8 L2 B& J" k- u& E GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
y7 P3 I; c; P' ?" Z& l2 U9 m$ \) D //SIMO7 v. W; w% t6 `
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 \. [- U( x ^$ u2 T+ }
//SOMI8 t4 k1 P2 {# q! ~4 H* I( P- F- u
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' k+ C! E8 j/ H3 \ //CLK
* [1 O w& j* {9 W! \* f7 o GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ C. v3 P6 R& a* u4 P6 {3 m/ G+ }: Y2 w6 X& D- G& W" {
// LDAC
: w) w: @8 k9 t" Q) v/ A" x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 y0 R5 K- J9 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' ~ W9 s1 C L" }+ w* ~4 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 T2 v1 [) U; [4 D+ o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. Q L' Q) b0 D( [- k4 }! | GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ J" F$ E! Y+ I7 A8 [}
! u. @2 B+ U' l8 |6 i7 Y, c1 H+ w+ S& a+ i! C U
int main(void)
0 j8 L9 S. Q2 j' Z{, |4 ?! s8 D: f \6 v
// 外设使能8 W2 G0 g o& A2 j. O0 D0 ^' p
PSCInit();
$ W' @/ W% y' d
0 O) X* ^* z# [ 8 X/ D- r* C( g8 O+ T* C- M9 {
// 管脚复用配置
/ A$ B) P. k' I( z" f, }4 d9 I GPIOBankPinMuxSet();2 S' C: F% x! U
for(;;)6 q* s4 }1 `$ e5 @: N9 s; J% f- N
{
% R- k8 z( M& g8 A4 o SET_SCLK();//时钟正常输出 i" f: t4 z3 U1 L7 F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! h) ~/ \9 p- b' J) k! ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
?0 x7 g: |5 Y5 h: g$ g2 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 w7 C- X; \' n# B: Y6 I( S1 d7 o2 z. _
. p1 v" X& B1 v. R" ~6 }! `# s delay(20);3 R7 B: s7 R- O! i- G2 F) h4 R9 T
CLR_SCLK();
- [/ z& a. ^8 G8 r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ F. J) |: {! i7 u$ F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 v7 T# y1 k/ @2 n! J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 R4 r+ d- ]0 M- s+ r1 [
delay(20);
2 O; ~; q- {: M( | }
2 C* O3 t! E1 ~8 K' C" p}0 [, W2 y. ]8 s( C1 I* u! f6 C
|
|